2011-01-08 63 views
1

您好我想要做的應用巫剛低於兩個視圖應用與根模板視圖

(這裏,頂部或東西ADN負載其他視圖一個很好的標誌根模板的觀點是什麼,我現在所擁有的: Test App

但是我有一點問題。如果我在文件上TestAppDelegate.m行刪除註釋58

//[currentView release]; 

應用程序將與一堆錯誤崩潰當我嘗試切換視圖。 但是,如果我評論此行項目分析器告訴我,我有一個潛在的泄漏 與currentView變量。

有人可以抽出一些時間,看看那段代碼我做錯了什麼?

+0

你是如何創建* currentView *?你正在分配它嗎? – EmptyStack 2011-01-08 11:42:50

回答

0

的問題是,你只添加currentView.view作爲一個子視圖,以便被其他地方保留,但currentView本身不是。這意味着,當你釋放它時,它會被釋放,如果沒有它,它的視圖將會很難工作。

一個解決方案是將currentView作爲實例變量併爲其創建屬性,以便爲您完成內存管理。

@property (nonatomic, retain) UIViewController *currentView; 

,然後替換喜歡

currentView = [[First alloc] initWithNibName:@"First" bundle:nil]; 

一個符合

self.currentView = [[First alloc] initWithNibName:@"First" bundle:nil]; 

這保留了新的人之前將釋放舊的視圖控制器。然後最後不要忘記在dealloc這個課程中發佈currentView

0

我有一個功能,它看起來像這樣:

- (void) switchView: (int) viewType { 

for (UIView *view in [self.viewController.rootView subviews]) { 
    [view removeFromSuperview]; 
} 

UIViewController *currentView = nil; 

switch (viewType) { 
    case 1: 
     currentView = [[First alloc] initWithNibName:@"First" bundle:nil]; 
     break; 

    case 2: 
     currentView = [[Second alloc] initWithNibName:@"Second" bundle:nil]; 
     break; 

} 

[self.viewController.rootView addSubview: [currentView view]]; 
[self.window makeKeyAndVisible]; 

//[currentView release]; 

}

+0

不要將此添加爲答案。您可以使用問題底部的鏈接編輯您的問題。 – EmptyStack 2011-01-08 11:49:56

+0

對不起:( – Tieman 2011-01-08 11:58:57