为什么Objective-C属性有点不方便?

jus*_*mer 3 objective-c

这更像是一个抱怨而不是一个问题,尽管也许有人对它有一些好处.所以基本上如果你想在你的Objective-C类中使用ivar有访问器方法,你必须提到它3次

SomeClass* _ivar;
@property (nonatomic,retain/assign/copy) SomeClass* ivar;
@synthesize ivar = _ivar;
Run Code Online (Sandbox Code Playgroud)

也许第四次采用dealloc方法.因此,如果这种方法就像Java风格的注释 - 在实际的ivar声明之前的某个地方,就像这样:

@property (nonatomic,retain,synthesize = ivar,dealloc) SomeClass* _ivar; 
Run Code Online (Sandbox Code Playgroud)

这也生成了访问器方法,并且dealloc - 告诉在dealloc方法中释放ivar.

Vla*_*mir 6

实际上你不必申报ivar - 如果你只是为它们申报财产,它们就可以合成.这应该为你合成名称iVar :(虽然在传统运行时不支持 - 所以这个看似冗余的语法的原因之一是为了与传统平台向后兼容)

@interface MyClass : NSObject 
{
}

@property(copy) NSString *name;

@end

...
@synthesize name;
Run Code Online (Sandbox Code Playgroud)

在新的XCode版本(可能是4.0)中,您也不需要使用@synthesize - 默认情况下将合成属性.

所以当你看到objective-c开发满足你的愿望:)