Вы присваиваете объект, возвращаемый dictionaryWithContentsOfFile:
, для dictionary
ivar, но не претендуете на владение им, отправляя ему сообщение retain
:
dictionary = [NSDictionary dictionaryWithContentsOfFile:finalPath];
Метод dictionaryWithContentsOfFile:
возвращает объект , которому вы не владеете . Возможно, к моменту выполнения checkAnswer:
объект уже освобожден. Вы должны сохранить его:
dictionary = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];
Или используйте вместо него alloc-initWithContentsOfFile:
, который возвращает объект , которому вы владеете :
dictionary = [[NSDictionary alloc] initWithContentsOfFile:finalPath];
И то же самое относится к gameplay
ивару. Вы не владеете объектом, возвращаемым valueForKey:
, и вам необходимо сохранить его. Итак, эта строка:
gameArray = (NSMutableArray *)[sud valueForKey:@"gameArray"];
должно быть:
gameArray = [[sud valueForKey:@"gameArray"] retain];