为什么Objective-C属性有点不方便?
这与其说是一个问题,不如说是一个抱怨,尽管也许有人对此有一些好的看法。所以基本上,如果你想在Objective-C类中有一个ivar,你必须提到它三次为什么Objective-C属性有点不方便?,objective-c,Objective C,这与其说是一个问题,不如说是一个抱怨,尽管也许有人对此有一些好的看法。所以基本上,如果你想在Objective-C类中有一个ivar,你必须提到它三次 SomeClass* _ivar; @property (nonatomic,retain/assign/copy) SomeClass* ivar; @synthesize ivar = _ivar; 也许是第四次用Dealoc方法。因此,如果该方法类似于Java风格的注释——在实际ivar声明之前的某个位置,比如: @property (n
SomeClass* _ivar;
@property (nonatomic,retain/assign/copy) SomeClass* ivar;
@synthesize ivar = _ivar;
也许是第四次用Dealoc方法。因此,如果该方法类似于Java风格的注释——在实际ivar声明之前的某个位置,比如:
@property (nonatomic,retain,synthesize = ivar,dealloc) SomeClass* _ivar;
这也会生成访问器方法,并且dealloc-告诉您在dealloc方法中dealloc ivar。实际上您不必声明ivar-如果您只为它们声明属性,就可以合成它们。这应该为您合成名称iVar:(但在遗留运行时不受支持-因此这种看似冗余的语法的原因之一是为了与遗留平台向后兼容) 在新的XCode版本(可能是4.0版)中,您也不需要使用@synthesis-默认情况下将合成属性
正如您所看到的,objective-c的开发满足了您的需求:)Xcode 4不能自动合成属性。但是使用ARC(自动引用计数),您不再需要担心dealloc和实例变量 你说得对,这与其说是个问题,不如说是个抱怨。
@interface MyClass : NSObject
{
}
@property(copy) NSString *name;
@end
...
@synthesize name;