0

这里有两种标题的区别吗?

@interface MyObject: NSObject{
    NSString *title;
}


@property (nonatomic, retain) NSString *title;
4

2 回答 2

10

第一个是实例变量。

二是财产。

实例变量作为类声明(接口)的一部分在很大程度上已被弃用,但类内部使用的实例变量可以在扩展或@implementation 中声明。

属性声明了 API(setter/getter)和使用的内存管理模型。默认情况下,现代编译器会自动合成实例变量以支持属性。

于 2013-03-26T02:27:02.367 回答
1

上面的不是属性,而只是一个实例变量。我的意见在这里:

  1. 使用最新的 Xcode。
  2. 不要写实例变量:@interface MyObject : NSObject { NSString *title; }
  3. 只使用@property,不需要显式地使用@synthesize它,Xcode 将隐式地@synthesize title = _title;在哪里 _title是支持属性的实例变量self.title

我认为这是一种很好的编码风格。

于 2013-03-26T02:53:53.240 回答