我见过很多代码都是这样做的:
@interface Test0 : NSObject {
@private int iVar;
}
@property (readwrite,assign) int iVar;
@end
Run Code Online (Sandbox Code Playgroud)
和其他一些代码:
@interface Test0 : NSObject {
}
@property (readwrite,assign) int iVar;
@end
Run Code Online (Sandbox Code Playgroud)
我知道你使用它@synthesize iVar来告诉编译器生成属性的getter和setter方法iVar.
我的问题:我们需要声明@private int iVar;实例变量吗?这样做有什么好处?声明实例变量与属性的最佳做法是什么?编译器是否将实例变量与属性相关联?
提前致谢.
使用非脆弱基类(IIRC,OS X上的64位运行时以及iOS 4.0及更高运行时)的现代Objective-C运行时和编译器允许您省略实例变量.您的第一个示例是旧运行时所必需的,后者是现代运行时所需的全部.