Aktualisierte Antwort für geänderte Dokumentation
Die Informationen sind jetzt auf mehrere Handbücher in der Dokumentation verteilt. Hier ist eine Liste der erforderlichen Lektüre:
Die Antwort auf diese Frage hängt jetzt ganz davon ab, ob Sie eine ARC-verwaltete Anwendung verwenden (die moderne Standardeinstellung für neue Projekte) oder die manuelle Speicherverwaltung erzwingen.
Zuweisen vs. Schwach - Verwenden Sie Zuweisen , um den Zeiger einer Eigenschaft auf die Adresse des Objekts zu setzen, ohne es beizubehalten oder auf andere Weise zu kuratieren. Verwenden Sie schwach , damit die Eigenschaft automatisch auf Null verweist, wenn das ihr zugewiesene Objekt freigegeben wird. In den meisten Fällen möchten Sie schwach verwenden, damit Sie nicht versuchen, auf ein freigegebenes Objekt zuzugreifen (illegaler Zugriff auf eine Speicheradresse - " EXC_BAD_ACCESS
"), wenn Sie keine ordnungsgemäße Bereinigung durchführen.
Beibehalten vs. Kopieren - Deklarierte Eigenschaften verwenden standardmäßig Beibehalten (Sie können sie also einfach ganz weglassen) und verwalten den Referenzzähler des Objekts automatisch, unabhängig davon, ob der Eigenschaft ein anderes Objekt zugewiesen oder auf Null gesetzt ist. Verwenden Sie copy , um dem neu zugewiesenen Objekt automatisch eine -copy
Nachricht zu senden (die eine Kopie des übergebenen Objekts erstellt und diese Kopie stattdessen der Eigenschaft zuweist - nützlich (sogar erforderlich) in einigen Situationen, in denen das zugewiesene Objekt nach dem Festlegen als geändert werden kann eine Eigenschaft eines anderen Objekts (was bedeuten würde, dass Modifikation / Mutation auch für die Eigenschaft gelten würde).
Das Programmierhandbuch zur Speicherverwaltung aus der iOS-Referenzbibliothek enthält Grundlagen zum Zuweisen, Kopieren und Aufbewahren mit Analogien und Beispielen.
quelle
quelle
zuordnen
Kopieren:
behalten:
quelle