在一个非常大的项目中,我到处都使用了自动合成的属性:
//MyClass.h file:
@interface MyClass : NSObject
@property (nonatomic, retain) NSString *deviceName;
@property (nonatomic, retain) NSString *deviceID;
@end
//MyClass.m file:
#import "MyClass.h"
@implementation ApplicationStatus
// no @synthesize used at all.
-(void)dealloc{
[_deviceName release]; // gives errors only while converting to ARC with LLVM 5.0
[_deviceID release];
[super dealloc];
}
@end
上面的代码在非 ARC 模式下编译良好,在 ARC 转换过程中也可以在旧 Xcode 版本中编译。当尝试使用最新的 LLVM 5.0 编译器(最新的 Xcode)进行转换时,它给了我数百万个错误:
这是什么原因?我现在是否必须手动创建数百个实例变量并手动 @synthesize 它们?这不是从苹果在所有 WWDC 上宣传的“少写代码”理念退后一步吗?