Я получаю неправильный доступ (objc_msgsend) при вызове этой строки кода:
self.currentGameTeam = nil;
Где «currentGameTeam» определен в интерфейсе для класса «MCState» как:
MNAvailableTeamContext *currentGameTeam;
И я синтезирую для него свойство:
@property (retain) MNAvailableTeamContext *currentGameTeam;
После установки NSZombieEnabled консоль показывает:
*** -[MNAvailableTeamContext release]: message sent to deallocated instance 0x5b3eba0
И трассировка отладчика показывает, что она исходит из синтезированного установочного кода:
#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
Остальные работают нормально - только currentGameTeam доставляет мне неприятности. Есть идеи?