2011-05-26 37 views
-1

我有這樣的代碼來顯示一個子視圖,並刪除它:IOS:刪除子視圖,當我鍵入它

if(view1 == nil){ 

    view1 = [[Calendar alloc] initWithNibName:@"Calendar" bundle:nil]; 
    [view1 setDelegate:self]; 

    [self.view addSubview:view1.view]; 
    view1.view.frame = CGRectMake(250, 0, 550, 400); 

} 

其刪除:

[view1.view removeFromSuperview]; 
view1 = nil; 
[view1 release]; 

它做工精細,當我推這個子視圖中的按鈕「view1」,但如果我輸入這個視圖,也可以刪除這個視圖?

+0

你是什麼意思輸出?在view1被釋放後設置view1 = nil。首先將它設置爲零然後釋放沒有好的效果。 – taskinoor 2011-05-26 13:50:46

+0

輸入該視圖? – onnoweb 2011-05-26 13:51:00

+1

您的代碼中存在一些內存管理問題。在將其分配爲子視圖後,您應該釋放視圖,然後不要擔心在後面的代碼中釋放視圖。現在你正在調用'view1 = nil'在調用發佈之前,你只需要將發佈發佈到什麼都沒有。 – Dancreek 2011-05-26 13:53:03

回答

2

在釋放沒有意義之前先使它成爲零;你已經銷燬了引用,所以變量不再與任何東西連接。呼籲釋放它不會工作。