我得到一個壞的訪問調用這行代碼時(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