我看过很多代码都是这样做的:
@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;
实例变量吗?
这样做有什么好处?声明实例变量与属性的最佳做法是什么?
编译器是否将实例变量与属性相关联?
提前致谢。
答案 0 :(得分:5)
使用非脆弱基类的现代Objective-C运行时和编译器(IIRC,OS X上的64位运行时以及iOS 4.0及更高版本的运行时)允许您省略实例变量。您的第一个示例是旧运行时所必需的,后者是现代运行时所需的全部内容。