Instance变量与属性有什么不同?

时间:2010-11-28 22:26:38

标签: objective-c

我看过很多代码都是这样做的:

@interface Test0 : NSObject {
        @private int iVar;
}
@property (readwrite,assign) int iVar;
@end

和其他一些代码:

@interface Test0 : NSObject {
}
@property (readwrite,assign) int iVar;
@end

我知道您使用@synthesize iVar告诉编译器为属性iVar生成getter和setter方法。

我的问题: 我们需要声明@private int iVar;实例变量吗? 这样做有什么好处?声明实例变量与属性的最佳做法是什么? 编译器是否将实例变量与属性相关联?

提前致谢。

1 个答案:

答案 0 :(得分:5)

使用非脆弱基类的现代Objective-C运行时和编译器(IIRC,OS X上的64位运行时以及iOS 4.0及更高版本的运行时)允许您省略实例变量。您的第一个示例是旧运行时所必需的,后者是现代运行时所需的全部内容。