2011-11-16 71 views
0

爵士,iphone的UIButton釋放

- (void)viewDidLoad{ 
for (int i = 1; i <= 4; i++) 
{ 
    playButton=[[UIButton alloc]initWithFrame:CGRectMake(curLocX,1.0,45,kScrollObjHeight)]; 
    [playButton setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal]; 
    [playButton addTarget:self action:@selector(playClicked) forControlEvents:UIControlEventTouchUpInside]; 
    curLocX+=100; 
    }} 

我釋放爲playButton在viewDidUnload和dealloc的 1.I創造了四個按鍵,但我只公佈一次的正確或錯誤 2.我已經發布了viewDidUnload和其dealloc的正確或錯誤 提前感謝您的寶貴建議 Suresh.M

回答

2

是的,如果一個對象被分配了4次,它應該被釋放相同數量的計數。

btw我不確定你想在這裏做什麼,在循環結束時playButton只會引用最後一個對象,你甚至不會將playButton作爲子視圖添加到任何視圖。無論如何,你可以避免使用alloc和user的buttonWithType方法,這個方法本身處理UIButton對象的分配和釋放,所以你不必擔心釋放調用。

- (void)viewDidLoad{ 
for (int i = 1; i <= 4; i++) 
{ 
    UIButton *playButton = [UIButton buttonWithType: UIButtonTypeCustom]; 
    playButton.frame = CGRectMake(curLocX,1.0,45,kScrollObjHeight); 
    [playButton setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal]; 
    [playButton addTarget:self action:@selector(playClicked) forControlEvents:UIControlEventTouchUpInside]; 
    curLocX+=100; 
    [self.view addSubview: playButton]; //you might have missed this statement 

}}

+0

感謝您的寶貴答覆。在它之前,我添加了子視圖。問題只是分配。 – suresh

0

,則應該從地方的至少一個(viewDidUnload/dealloc中)刪除您的按鈕釋放性,避免DUBBLE釋放得到要求的對象。

創建對象(在你的情況按鈕),並在一次釋放他們所有人都沒問題。

0

你必須在處爲循環本身釋放按鈕。

for (int i = 1; i <= 4; i++) 
    { 
     playButton=[[UIButton alloc]initWithFrame:CGRectMake(curLocX,1.0,45,kScrollObjHeight)]; 
     [playButton setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal]; 
     [playButton addTarget:self action:@selector(playClicked) forControlEvents:UIControlEventTouchUpInside]; 
     curLocX+=100; 
     [playButton release]; 
     } 

注: 如果您分配一個對象「N」次,你必須釋放對象「N」次。