我看到有人写了这样的代码
@interface SomeClass:<NSObject>{
NSString * _iVar;}
@property(nonatomic,retain)NSString *iVar;和在实现文件中
@synthesize iVar = _iVar;但我总是喜欢这样写代码:
@interface SomeClass:<NSObject>
@property(nonatomic,retain)NSString *iVar;和在实现文件中
@synthesize iVar = _iVar;它们都工作得很好,我可以使用一个实例someClass来获取iVar "someClass.ivar".I,知道为什么吗?
发布于 2013-03-02 14:12:16
现在你甚至不再需要合成iVars了。最新的Xcode将自动为每个属性创建一个支持实例变量,并在属性名称前加上下划线。
发布于 2013-03-02 14:19:22
在Objective-C中,当你使用任何东西的时候。(点语法),它正在访问属性。您已经声明并合成了一个名为iVar的属性,因此可以使用someClass.iVar访问它。
声明属性时,会自动使用该属性创建一个变量。所以,即使你不创建一个变量,它也会存在。
为了避免歧义,人们创建了具有不同名称的属性和iVar。因此,它们可以识别是否正在使用变量或属性。在这种情况下,人们以低级方式让编译器知道某个特定变量与某个属性相关联:
@synthesize iVar = _iVar;如果你想直接在类的外部访问变量而不是属性,你应该使用"->“(箭头语法)。
https://stackoverflow.com/questions/15171368
复制相似问题