Wird Ein Objekt Zugeordnet Werden, Automatisch Freigegeben?
Hinweis: Diese andere Frage scheint relevant, aber es ist nicht: Wann wird ein Objekt zugeordnet freigegeben?
Ich bin das hinzufügen einer zweiten Beschreibung, um eine UIView
Instanz wie folgt:
- (void) setSecondDescription:(UIView*)view description2:(NSString*)description2 {
objc_setAssociatedObject (view,&key,description2,OBJC_ASSOCIATION_RETAIN);
}
- (NSString*) secondDescription:(UIView*)view {
return (id)objc_getAssociatedObject(view, &key);
}
Wenn die UIView
deallocs, wird die zugehörige Beschreibung 2 bekommen dealloced? Gibt es eine Möglichkeit, um dies automatisch passieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, um tatsächlich sehen die Beschreibung des gesamten dealloc timeline, schauen Sie auf der WWDC 2011 Session 322, 36:22. Jedoch, hier ist der grundlegende überblick (ich wollte es nicht zu vergessen, so ist dies ein tatsächlicher Kommentar in ein Stück von meinem code).
Beachten Sie, dass die zugeordneten Objekte werden freigegeben, am Ende des Lebenszyklus.
Ja. Wenn ein Objekt dealloc würde, werden alle zugehörigen Objekte (das verwenden die
RETAIN
oderCOPY
association-Typen) sind automatisch freigegeben.Kurz gesagt, ja - wenn das Besitz-Objekt freigegeben wird dann beibehalten zugeordneten Objekte werden freigegeben. Siehe den ersten Abschnitt von Apple Dokumentation
Abschnitt 4 in Jody Hagins' Antwort sagt "Löschen zugehörige Verweise", die nicht explizit bedeuten, dass die Verweise freigegeben werden. So habe ich das folgende Stück code (note OHNE BOGEN) um dies zu testen.
Berufung auf obige code funktioniert in der Tat am Ende aufrufen -[AssociatedObjectHelper dealloc], mit den folgenden stack-trace:
Getestet auf Xcode 7.0.1