最后,我正在过渡到 ARC。听起来为时已晚,但我所有的项目都具有对 3.0 的逆向兼容性(有关 App Store 不支持的任何消息?)所以我不能使用它。但是现在我正在一个在 iOS 5 中进行基本部署的新项目中工作,所以我使用的是 ARC。
我的问题很简单。我习惯于声明私有实例变量和公共属性。例如:
@interface MyClass : NSObject {
@private
Var *aVar_;
Var *anotherVar_;
}
@property (nonatomic, readonly) Var *aVar;
@end
@implementation MyClass
@synthesize aVar = aVar_;
@end
在类中,我使用实例变量,而不是属性。
但是现在我试图避免使用实例变量,因为我认为如果我使用 proeprties 就没有必要和冗余,而且我之前读过最好使用属性而不是实例变量,但我不确定。那堂课现在看起来像这样
@interface MyClass : NSObject
@property (nonatomic, readwrite, strong) Var *aVar;
@end
@interface MyClass()
@property (nonatomic, readwrite, strong) Var *anotherVar;
@end
@implementation MyClass
@synthesize aVar = aVar_;
@synthesize anotherVar = anotherVar_;
@end
在这种情况下,我仍然使用实例变量(下划线)来管理我的数据,因为它不那么冗长,而且 ARC 考虑了所有内存问题,但我不知道这是否正确。
另外我还有一个问题。aVar
第一段代码中的属性是只读的,但如果我只使用属性,我必须将该属性设为可读写。如果我想将公共属性设为只读,我是否必须在@interface 中声明公共只读属性并在私有@interface 中声明私有读写?
太感谢了。