您好我想要做的應用巫剛低於兩個視圖應用與根模板視圖
(這裏,頂部或東西ADN負載其他視圖一個很好的標誌根模板的觀點是什麼,我現在所擁有的: Test App )
但是我有一點問題。如果我在文件上TestAppDelegate.m行刪除註釋58
//[currentView release];
應用程序將與一堆錯誤崩潰當我嘗試切換視圖。 但是,如果我評論此行項目分析器告訴我,我有一個潛在的泄漏 與currentView變量。
有人可以抽出一些時間,看看那段代碼我做錯了什麼?
您好我想要做的應用巫剛低於兩個視圖應用與根模板視圖
(這裏,頂部或東西ADN負載其他視圖一個很好的標誌根模板的觀點是什麼,我現在所擁有的: Test App )
但是我有一點問題。如果我在文件上TestAppDelegate.m行刪除註釋58
//[currentView release];
應用程序將與一堆錯誤崩潰當我嘗試切換視圖。 但是,如果我評論此行項目分析器告訴我,我有一個潛在的泄漏 與currentView變量。
有人可以抽出一些時間,看看那段代碼我做錯了什麼?
的問題是,你只添加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
。
我有一個功能,它看起來像這樣:
- (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];
}
不要將此添加爲答案。您可以使用問題底部的鏈接編輯您的問題。 – EmptyStack 2011-01-08 11:49:56
對不起:( – Tieman 2011-01-08 11:58:57
你是如何創建* currentView *?你正在分配它嗎? – EmptyStack 2011-01-08 11:42:50