我有一個基於導航的視圖控制器,並在視圖控制器中隱藏頂部導航欄,並使用自定義UIView作爲導航欄。UIViewController&UIview dealloc沒有被調用
UIView欄有一個後退按鈕,我使用Delegate方法(我已經聲明瞭一個協議)在後臺按鈕被打開時與視圖控制器進行通信。
我在我的CustomNavigation Bar中使用委託 id delegate;
,並在主視圖控制器的時候,我分配在導航欄我設置委託
topBar = [[TopNavigationBar alloc] initWithFrame:CGRectMake(0, 0, 480, 40)];
topBar.lblTitle.text = @"Shop";
topBar.delegate = self;
我發佈這個酒吧在ViewControllers的dealloc。
現在當我按下後退按鈕時,我使用委託方法在主ViewController中調用popViewController。
//in Custom Bar
-(void)ButtonPressed {
[delegate TopNavigationBarBackButtonPressed];
}
//In View COntroller
-(void)TopNavigationBarBackButtonPressed {
[self.navigationController popViewControllerAnimated:YES];
}
現在的ViewController彈出,控制轉移到以前的viewController不過的dealloc沒有在這兩個視圖控制器和UIView的
解僱我到底做錯了什麼?
任何想法的人?如果retainCount不是0,dealloc將不會被調用。但是我不保留viewController的任何地方。在我將它推入堆棧後,我做了一個[vewController release]。所以我能想到的唯一原因是我寫的自定義協議。我必須釋放它嗎?我確實保留了該財產的代表。但即使我在dealloc中釋放它,它也不會被調用。難倒! – 2010-12-21 06:43:57