我正要重构我当前的 iOS 项目以使用 ARC。在使用“重构到 ARC”工具 i xCode 预览将我当前代码迁移到 ARC 的更改后,我可以看到我当前的代码约定可能不适合 ARC。因为它为我的 ivars 添加了很多 __weak / __strong 等。
以下是我目前的约定:
我将所有实例变量定义为私有或受保护的 ivars。以及我为其创建@property 的所有公共变量。
@interface TestClass
{
@private
NSMutableArray* mArray;
NSString* mString;
BOOL mMyBoolean;
}
@property (retain, nonatomic) NSString* string; // public
@end
我总是用@property返回所有对象,以避免处理释放/保留,所以如果我有一个作为引用的私有变量,我只需在实现中创建一个类别。结构(如 mMyBoolean)我只是将定义保留为 ivar。
@interface TestClass()
@property (retain, nonatomic) NSmutableArray* mArray;
@end
@implementation TestClass
@synthesize string = mString;
@synthesize mArray;
@end;
但是因为新的 ARC 负责保留/释放,所以我不需要 @property 支持私有变量。
那么什么代码约定更合适呢?我一直在考虑像这样在界面中定义属性:
@interface TestClass
{
@private
NSMutableArray* mArray;
BOOL myBoolean;
}
@property (strong, nonatomic) NSString* string;
@end
@implementation TestClass
@synthesize string;
@end
并且不要将类别属性用于私有属性。(我也删除了“m”前缀)并且我没有定义 @property 应该使用的支持 ivar,而是让 xcode 使用它的自动生成?