我得到一个坏的访问调用这行代码时(objc_msgsend)时:EXC_BAD_ACCESS合成(保留)属性设置为nil
self.currentGameTeam = nil;
其中“currentGameTeam”的接口被定义为一个名为“MCState类“为:
MNAvailableTeamContext *currentGameTeam;
我合成一个属性吧:
@property (retain) MNAvailableTeamContext *currentGameTeam;
设置NSZombieEnable后d控制台显示:
*** -[MNAvailableTeamContext release]: message sent to deallocated instance 0x5b3eba0
而且调试跟踪显示它来自于合成的setter代码中:
#3 0x0001fa96 in -[MCState setCurrentGameTeam:] at MCState.m:44
我看了其他一些问题和线程,我无法找到一个适用于我的案例的答案。我不明白为什么如果我已经综合了这个属性并且我将它设置为零,为什么会有不好的访问。什么是特别奇怪的是,有在MCState其他至少3个属性被定义并在确切相同的方式currentGameTeam使用,唯一的区别是它们是不同的类型:
MNUserContext *storedUser;
MNActiveGameContext *storedGame;
MNAvailableUserContext *storedGameUser;
MNAvailableTeamContext *storedGameTeam;
和
@property (retain) MNUserContext *currentUser;
@property (retain) MNActiveGameContext *currentGame;
@property (retain) MNAvailableUserContext *currentGameUser;
@property (retain) MNAvailableTeamContext *currentGameTeam;
和
@synthesize currentUser;
@synthesize currentGame;
@synthesize currentGameUser;
@synthesize currentGameTeam;
终于
self.currentUser = userContext;
self.currentGame = nil;
self.currentGameUser = nil;
self.currentGameTeam = nil; // Error occurs here
其余的都是正常行为 - 只有当前游戏队给我带来麻烦。有任何想法吗?
`self.currentGameTeam = nil;`位于哪里? – raidfive 2011-02-03 03:33:57