2009-04-24 10 views
0

Beispiel:Warum muss ich Speicher aufräumen, wenn ich ein IBOutlet mit "behalten" habe, aber nicht, wenn ich eins mit "zuweisen" habe?

@property (..., assign) 

da, ich mache keine Bereinigung in der dealloc Methode. Aber wenn ich eine

@property (..., retain) 

dann würde ich tun.

Ich habe das von irgendwo im Internet. Erinnere dich nicht an die Seite. Nun, ich weiß, dass das Retain-Schlüsselwort in der Compiler-Direktive einen Retain-Wert von +1 ergeben würde, aber ich glaube tatsächlich, dass ich den tiefen Unterschied in Assign und Retain verpasst habe.

Antwort

2

Assign kopiert nur den Zeiger und sendet keine retain Nachricht an das Objekt. Da Sie es nicht beibehalten, müssen Sie es nicht freigeben.

Bei behalten, wie Sie sagen, es wird eine retain Nachricht an den Vermieter, seine Zählung behalten Erhöhen Sie deshalb, ob Objekt Senden einer Nachricht release verantwortlich sind, wenn Ihr Objekt (in Ihrem dealloc) ist.

Verwandte Themen