2011-04-15 81 views
0

我已经为下面的代码:如何在使用addSubview时释放视图控制器?

+(void) addHeader:(UIViewController*) hostViewController requiresBackBtn:(BOOL)BooleanValue 
{  
    ApplicationHeader *appHeader = [[ApplicationHeader alloc] initWithNibName:@"ApplicationHeader" bundle:nil]; 
    appHeader.hostViewController = hostViewController; 
    [appHeader.view setFrame:CGRectZero]; 
    [hostViewController.view addSubview:appHeader.view]; 

    if (BooleanValue) { 
     [appHeader.view setFrame:CGRectMake(0, 0, 320, 97)]; 
    } 
    else { 
     [appHeader.backBtn setHidden:TRUE]; 
     [appHeader.view setFrame:CGRectMake(0, 0, 320, 74)]; 
    } 
// [appHeader release]; // This call tends to app Crash!!!!! 
} 

如果我呼吁释放appHeader然后应用程序崩溃我按这appHeader发现按钮! 如果我不这是一个内存泄漏。

现在该做什么? :(

回答

0

我不知道的ApplicationHeader是什么,但我知道,你们已经从 [hostViewController.view addSubview:appHeader.view]; 将ApplicationHeader所保持的观点是作为一个子类的UIView?更没有更多的信息,我不知道是什么建议作为一种解决方案,但我认为你需要重新思考你想要完​​成什么

+0

其实ApplicationHeader是一个视图控制器,它是一个普通的视图控制器,有3个按钮,这些按钮在整个应用程序中都很常见 我希望现在你有一个更好的主意 – necixy 2011-04-15 08:37:08

+0

不是真的。从来没有听说过它,我无法找到它的任何信息......当然,我几乎专门为iPhone开发,它听起来像一个已经提供的可可触摸设计。无论如何,其他答案都有好处。如果ApplicationHeader是一个视图控制器,它应该单独为其视图负责。 – jakev 2011-04-16 01:11:14

0

在你的viewController中添加其他控制器的视图是针对苹果公司的“每个屏幕一个控制器”策略,它肯定会给1级和2级内存警告和应用程序将崩溃intentpesly。

相关问题