2012-04-03 43 views
0

在我的iPad應用程序,何時發佈動態創建的對象

我有一個自定義類繼承自UIButton。

我使用for循環動態地在我的主視圖中添加按鈕。

此按鈕也有標籤。

我的問題是何時發佈自定義類的對象。

for(NSMutableDictionary *dict in Categories) 
{ 

Category *category=[[Category alloc] initWithName:[dict valueForKey:@"category_name"] identity:[[dict valueForKey:@"category_id"] intValue] imageName:nil]; 

category.lblimagesCount=[[UILabel alloc] initWithFrame:CGRectMake(category.frame.size.width-31, category.frame.origin.y-42, 26, 26)]; 

[category addSubview:category.lblimagesCount]; 

[self.viewHeader addSubview:category]; 

[category release]; 
category=nil; 

} 

如何避免內存泄漏。 尤其對於 1.標籤 2.分類類。

在哪裏寫發佈?

i。分類類(UIButton)有它的dealloc方法,但它永遠不會被調用。

ii。當我將它添加到子視圖後立即發佈,它會影響我的按鈕點擊。

iii。我何時應該放開標籤。

對內存管理非常困惑。

回答

3

我會回答你的問題:

我。分類類(UIButton)有它的dealloc方法,但它永遠不會被調用。 由於未完全發佈,請參閱問題ii。

ii。當我將它添加到子視圖後立即發佈,它會影響我的按鈕點擊。 不,因爲您的子視圖現在是按鈕的所有者,當您將其添加到子視圖中時,您和子視圖都是所有者,當您釋放時,該按鈕現在由子視圖擁有。

iii。我何時應該放開標籤。 只要你添加到子視圖,出於與問題ii相同的原因。

我很樂意澄清,如果你不明白它。

+0

@Antoonio標籤將如何與類別類關聯發佈? – 2012-04-03 07:04:19

+0

因爲安東尼奧會發生什麼,如果我將它添加到子視圖後發佈標籤,我不能在代碼中進一步修改它。標籤不反映這些變化。 – 2012-04-03 07:06:54

+0

正如我之前讀過的,當你添加子視圖時,你的視圖是屬於子視圖的,而不是你的對象的整個屬性? – 2012-04-03 07:07:35