我有一个类,BPGameEngine
,具有只读属性,currCharacter
。过去,我一直直接(如_currCharacter = someCharacter;
)在BPGameEngine
. 在一个子类中,我发现自己需要写入这个属性,因此在一个匿名类别中重新声明它,就像这样
@interface BPGameKitMPGameEngine()
@property (readwrite, assign) BPCharacterInstance* currCharacter;
@end
然后编译器出现了一个错误(奇怪的是,两天后我无法再重现),暗示需要一个@synthesize 语句,所以我@synthesize currCharacter = _currCharacter;
在子类(BPGameKitMPEngine
)中添加。
我没有在超类中添加类似的匿名类别,因为我只是直接使用 iVar。然后我发现在 super( )的调用中调用_currCharacter = someCharacter;
的方法中的行根本什么也没做。出现在调试器中,并且不是 nil,但是在执行该行之后,仍然存在. 奇怪的是,在子类中添加一个类似的匿名类别解决了这个问题,就像删除了一样(这不再导致 Xcode 抱怨编译器错误)。BPGameEngine
BPGameKitMPEngine
[super methodContainingAssignmentToCurCharIvar]
_currCharacter
someCharacter
_currCharacter
nil
@synthesize
对 an 的不一致要求@synthesize
似乎一定是 Xcode 中的一个错误,但其余部分让我很难过。有人可以解释@synthesize
在子类中存在的问题吗?