オーバーライドされた getter メソッド名でブール型のプロパティを使用する際に問題があります。たとえば、私の NSManageObject サブクラスのヘッダーには次のものがあります。
@property (nonatomic, retain, getter=isActive) NSNumber * active;
私が持っている実装ファイルで:
@dynamic active;
Xcode は「isActive」メソッドを認識し、入力中にオートコンプリートし、コードはエラーなしでコンパイルされます。ただし、このコード:
MyObject *newObject = (MyObject *)[NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext:[self context]];
NSNumber * tagActive = [newObject isActive];
クラシックでは失敗します:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyObject isActive]: unrecognized selector sent to instance 0xb67e760'
カスタムゲッターを削除し、[myObject active] を使用してアクティブなプロパティにアクセスするだけで動作することをテストしました。NSManagedObject プロパティはこれをサポートしていませんか、それとも間違っていますか?