2011-01-08 11 views
0

ich die LazyTableImages code lese, dass Apple freigegeben und sie etwas tun, um diesen Effekt (in einer NSOperation Unterklasse):iPhone Speicherverwaltung: eine Freigabe nach dem Abbinden self.someProperty = nil

- (void)dealloc { 
    [myProperty release]; 
    [myProperty2 release]; 
} 

- (void)main { 
    // 
    // Parse operation undertaken here 
    // 
    self.myProperty = nil; 
    self.myProperty2 = nil; 
} 

Mein Denken ist, dass Sie tun dies in Falldeallocwird vor dem Festlegen der Eigenschaften auf Null aufgerufen.

Ist mein Denken hier korrekt? Sind die Freigaben unnötig, wie effektiv myProperty freigibt?

Eine Sache, die ich in diesem Code bemerkt habe, ist, dass sie nicht release alle beibehaltenen Objekte in dealloc, nur einige von ihnen, die wirklich die Ursache für meine Verwirrung ist.

Prost

+1

Vergessen Sie nicht, '[super dealloc]' zu senden. Wenn Sie dies nicht tun, werden Sie das Objekt verlassen. –

Antwort

4

Sie nicht self.myProperty = nil oder sogar [myProperty release] nach dealloc tun können. Wissen warum? Weil self nicht mehr existiert.

Was Ihre Frage scheint es, dass die Freigaben in dealloc nicht notwendig sind, aber es ist immer noch eine gute Praxis, um Ihre Instanzvariablen in Ihrem dealloc Methode, um aufzuräumen.

bearbeiten

Wie Peter im Kommentar weist darauf hin, wenn die -main Methode nie ausgeführt wird, dann in -dealloc die Release-Anweisungen, die notwendig ist; Ohne sie würden Sie Erinnerungen verlieren.

+3

Die Freigaben in 'dealloc' * sind * notwendig, wenn' main' nie aufgerufen wird (wenn diese Operation zum Beispiel nie in die Warteschlange eingereiht wird) oder wenn eine oder beide Eigenschaften so geändert werden, dass sie nach der Rückkehr von 'main' wieder auf Objekte verweisen (dh nachdem der Vorgang beendet ist). Ich würde zum entgegengesetzten Ende gehen: Es ist nicht nötig, die Eigenschaften in 'main' unnötig zu machen. –

+0

@Peter guter Punkt (bearbeitete Antwort). Ich antwortete unter der Annahme, dass 'main' immer aufgerufen würde. –

+0

Cheers fellas macht Sinn! – dianovich

Verwandte Themen