2011-04-15 62 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。

相關問題