2009-04-02 4 views

Antwort

7

Eine schnelle Erklärung: Alles, was Sie alloc, neue, behalten oder kopieren Sie müssen auch Release. Auch alles, was Sie NICHT Alloc oder kopieren Sie behalten sollten, wenn Sie auf Festhalten an sie über die aktuelle Nachrichtenschleife planen (oder Sie riskieren es Autoreleased und immer eine ungültige Referenz wird).

+0

... und rememeber, dass alles init gestartet ... nach folgenden Regeln. initWithImage initWithoutClosingTheFridgeDoor usw. Sie auch diese Regeln befolgen sollten, wenn Klassen implementieren. init ... -Nachrichten sollten ein Objekt mit einer Retain-Anzahl von eins usw. zurückgeben. –

+1

Das ist nicht ganz richtig. Von der Apple-Dokumentation http://developer.apple.com/mac/library/documentation/cocoa/conceptual/MemoryMgmt/Articles/mmRules.html # // apple_ref/doc/uid/20000994-BAJHFBGH: ** Sie übernehmen den Besitz eines Objekts, wenn Sie es mit einer Methode erstellen, deren Name mit "alloc" oder "new" beginnt oder "copy" enthält (z. B. alloc , newObject oder mutableCopy), oder wenn Sie eine Retain-Nachricht senden. ** – Florin

+0

Eric, ich denke, Sie meinen * alloc *, * behalten * oder * kopieren *. :) – h4xxr

2

CocoaDev immer hat ziemlich gute Ressourcen und deren Einführung in der Speicherverwaltung ist keine Ausnahme.

1

Natürlich gibt es viele freie Ressourcen für über Speicherverwaltung zu lernen, aber wenn Sie wirklich neu in das Thema sind und würde einen visuellen Ansatz bevorzugen, Steve Scott (der Typ, der den Mac Developer Network läuft) hat eine große , Suppe-zu-Nüsse-Set von Trainingsvideos, die Sie für USD 10 herunterladen können: http://www.mac-developer-network.com/videotraining/beginner/vid001/. Es ist im Grunde eine Vorlesung, die über die Verwendung von Release und Autorelease hinausgeht und darüber spricht, wie das OS Speicher verwaltet. Sehr hilfreich, wenn Sie dieses Zeug in Comp verpasst haben. Sci. 101.

FWIW, ich verwendete eine Reihe von drei "Wenn" -Bedingungen, die hilfreich waren, als ich anfing (z. B. "Wenn ich Zuweisen oder Kopieren und Objekt, dann ..."). Es war leichter für mich, sich zuerst an diese drei Bedingungen zu erinnern als an das vollständige Regelwerk. Ich habe ein kurzes Tutorial geschrieben, das diese "Gehirn-Trigger" verwendet, um die Regeln zu erklären, falls es für andere hilfreich ist. http://www.clintharris.net/2009/three-brain-triggers-for-objc-memory-mgmt/

0

Für mich Apple's Memory Management Programming Guide recht gut funktioniert.

Es erklärt gleich zu Beginn, so dass Sie die Grundlagen der Arbeit beginnen können. Aber es geht auch in fortgeschrittenere Themen, wenn Sie interessiert sind.

Verwandte Themen