这两种标题有什么不同吗?
@interface MyObject: NSObject{
NSString *title;
}
@property (nonatomic, retain) NSString *title;
答案 0 :(得分:10)
第一个是实例变量。
第二个是财产。
实例变量在很大程度上被弃用作为类声明(接口)的一部分,但是内部使用的实例变量可以在扩展或@implementation中声明。
属性声明API(setter / getter)和使用的内存管理模型。默认情况下,现代编译器会自动合成实例变量以支持属性。
答案 1 :(得分:1)
上面的不是属性,而只是一个实例变量。 我的意见在这里:
@interface MyObject : NSObject {
NSString *title; }
@property
,无需明确@synthesize
,
Xcode将隐含@synthesize title = _title;
所在的位置
_title
是支持属性self.title
。我认为这是一种很好的编码风格。