在块中释放视图控制器的位置

时间:2011-10-20 07:02:54

标签: objective-c ios memory-management objective-c-blocks

您好我使用块来实现将viewcontrollers推送到堆栈上。我的代码如下:

我的问题是,对于内存管理,我在哪里可以发布firstView实例?我试图在完成块本身中释放它,但如果我从splashView按下后退按钮到第一个视图,我将得到“内存问题”

FirstViewController *firstView = [[FirstViewController alloc]init];

[firstView setCompletionHandler:^(BOOL isRequestInvite){

    splashView=[[AuthSplashController alloc] init];
    [splashView setCompletionHandler:onceCompleted];

    [navCon pushViewController:splashView animated:YES];
    //[firstView release];

}];

[navCon pushViewController:firstView animated:NO];

那么在这种情况下,哪里是发布firstView的最佳位置?

1 个答案:

答案 0 :(得分:4)

我认为你可以在导航堆栈上推送它后release firstView,因为保留计数会增加:

 [navCon pushViewController:firstView animated:NO];
 [firstView release];

或者您可以将该对象标记为autoreleased

 FirstViewController *firstView = [[[FirstViewController alloc]init] autorelease];