【发布时间】:2013-09-02 18:55:40
【问题描述】:
@property (nonatomic, copy ) NSString *title;
@synthesize title = _title;
这个“_title”是什么意思?
任何帮助表示赞赏。在此先感谢
【问题讨论】:
标签: objective-c
@property (nonatomic, copy ) NSString *title;
@synthesize title = _title;
这个“_title”是什么意思?
任何帮助表示赞赏。在此先感谢
【问题讨论】:
标签: objective-c
_title是iVar。表示它是变量,title只是一个属性。你是通过将iVar分配给属性来合成的。因为你不需要写类似的方法
- (NSString *)title {
return _title;
}
- (void)settitke:(int)newValue {
_title = newValue;
}
那些是getter和setter
当你这样做时
title =_title.上面这两个方法将setter和getter抽象成一行。
【讨论】:
这意味着属性的支持 iVar 有一个前导下划线。
所以你可以使用属性语法来访问它:
self.title = @"Some title";
或者您直接访问它,但使用下划线名称
_title = @"Some title";
虽然不鼓励使用直接访问,但初始化程序和 dealloc 方法除外。
如果您使用自动合成,则默认添加下划线。
原因:
当您使用直接访问来引用 iVar 而不是局部变量或属性时,它会更加清晰。
这也意味着您可以为方法参数使用明显的名称,而不必担心它们会发生冲突;例如,如果您要编写一个引用该属性的方法:
【讨论】: