try autorelease
на вашем контроллере вида:
GameViewController* game = [[[GameViewController alloc initWithNibName:@"GameViewController" bundle:nil] autorelease];
Контроллер навигации станет владельцем переданного ему контроллера вида, поэтому вам не нужно сохранять ссылку на него.Но вы не можете продолжать выделять GameViewControllers снова и снова, не выпуская их.autorelease
полезно для этого.Вы также можете выпустить его после того, как передаете его в контроллер навигации, если предпочитаете:
GameViewController* game = [[GameViewController alloc initWithNibName:@"GameViewController" bundle:nil];
[self.navigationController pushViewController:game animated:NO];
[game release];
game = nil;
РЕДАКТИРОВАТЬ: так что если вы уже освобождаете объект game
, то это должно быть утечка памятивнутри самого класса GameViewController
.
Все, что вы выделяете, копируете или сохраняете в своем классе GameViewController
, который вы должны выпустить в методе dealloc
(и, возможно, также в методе viewDidUnload
, еслиВы выделяете / копируете / сохраняете в методе viewDidLoad
.
Руководство по программированию управления памятью iOS может быть полезно, если вы хотите получить более подробную информацию.
Если вы хотите опубликовать соответствующий код из класса GameViewController
, я уверен, что кто-то сможет помочь вам определить утечку памяти.
Вы также можете попробовать инструмент Leaks в Instruments
EDIT 2:
Я предполагаю, что у вас есть несколько IBOutlets
, связанных со свойствами в вашем GameViewController
классе ...
don 'не знаю, если вы уже делаете это, но в вашем методе viewDidUnload
и в методе dealloc
выУбедитесь, что все эти свойства IBOutlets
установлены в nil для их освобождения, например:
- viewDidUnload
{
//... whatever comes before
self.timeLabel = nil;
self.NumberLabel = nil;
//... etc
}
- dealloc
{
//... whatever comes before
self.timeLabel = nil;
self.NumberLabel = nil;
//... etc
[super dealloc];
}
В общем, если у вас есть какие-либо свойства, объявленные с retain
, это означает, что когда вы устанавливаетеЭто свойство объекта будет сохранено.Если вы установите для этого свойства значение nil
, то объект, который там был, будет released
для вас.Таким образом, любые свойства с ключевым словом retain
должны быть установлены на nil
(или выпущен резервный ivar).