2012-04-03 32 views
0

In meiner iPad App,Wann dynamisch erstellte Objekte freigegeben werden sollen

Ich habe eine benutzerdefinierte Klasse von UIButton geerbt.

Ich füge die Schaltflächen in meiner Hauptansicht dynamisch mit For-Schleife.

Diese Schaltfläche hat auch Label.

Mein Problem ist, wenn die Objekte der benutzerdefinierten Klasse freigegeben werden.

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; 

} 

Wie Speicherlecks zu vermeiden. Speziell für 1. Etiketten 2. Kategorie Klasse.

Wo soll ich schreiben?

i. Die Kategorieklasse (UIButton) hat ihre Dealloc-Methode, wird aber nie aufgerufen.

ii. Da ich es sofort nach dem Hinzufügen zur Unteransicht freigebe, beeinflusst es meinen Klick auf die Schaltfläche.

iii. Wann sollte ich die Etiketten freigeben?

Sehr verwirrt über die Speicherverwaltung.

Antwort

3

werde ich Ihre Fragen beantworten:

i. Die Kategorieklasse (UIButton) hat ihre Dealloc-Methode, wird aber nie aufgerufen. Weil es nicht vollständig freigegeben ist, siehe Frage ii.

ii. Da ich es sofort nach dem Hinzufügen zur Unteransicht freigebe, beeinflusst es meinen Klick auf die Schaltfläche. Nein, weil Ihre Unteransicht jetzt der Besitzer der Schaltfläche ist. Wenn Sie sie der Unteransicht hinzufügen, sind sowohl Sie als auch die Unteransicht Eigentümer. Wenn Sie diese freigeben, gehört die Schaltfläche jetzt der Unteransicht.

iii. Wann sollte ich die Etiketten freigeben? Sobald Sie dann zur Unteransicht hinzufügen, aus dem gleichen Grund wie die Frage ii.

Ich werde gerne klären, wenn Sie es nicht verstehen.

+0

@Antoonio Wie wird das Label im Zusammenhang mit Kategorie-Klasse veröffentlicht? –

+0

Weil Antonio, wenn ich die Etiketten nach dem Hinzufügen zu den Unteransichten freizugeben, kann ich es nicht weiter im Code ändern. Da Labels die Änderungen nicht widerspiegeln. –

+0

Wie ich schon gelesen habe, wenn Sie subview hinzufügen Ihre Ansicht gehört Subview nicht die gesamten Eigenschaften Ihres Objekts? –

Verwandte Themen