非常に大きなプロジェクトの 1 つで、自動合成されたプロパティをあらゆる場所で使用しました。
//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 する必要がありますか? それは、Apple がすべての WWDC で宣伝した「少ないコードを書く」という哲学から一歩後退したのではないでしょうか?