BPGameEngine
読み取り専用プロパティを持つクラス がありますcurrCharacter
。_currCharacter = someCharacter;
以前は、 の中で ( のように) ivar に直接代入していましたBPGameEngine
。サブクラスで、このプロパティに書き込む必要があることに気付いたので、そのように匿名カテゴリで再宣言しました
@interface BPGameKitMPGameEngine()
@property (readwrite, assign) BPCharacterInstance* currCharacter;
@end
その後、コンパイラーにエラーが発生し (奇妙なことに、2 日後には再現できなくなりました)、@synthesize ステートメントが必要であることをほのめかしていたので@synthesize currCharacter = _currCharacter;
、サブクラス ( BPGameKitMPEngine
) に追加しました。
iVar を直接使用しただけなので、同様の匿名カテゴリをスーパークラスに追加しませんでした。次に、super( )への呼び出しで呼び出され_currCharacter = someCharacter;
たメソッド内にある行が単に何もしないことを発見しました。デバッガーに表示され、nil ではありませんでしたが、行が実行された後、残りました。奇妙なことに、サブクラスに同様の匿名カテゴリを追加すると、問題が修正されました。BPGameEngine
BPGameKitMPEngine
[super methodContainingAssignmentToCurCharIvar]
_currCharacter
someCharacter
_currCharacter
nil
@synthesize
の一貫性のない要件は、@synthesize
Xcode のバグに違いないように思えますが、これ以外のことには困惑しています。@synthesize
誰かがサブクラスにあることの問題を説明できますか?