2012-03-28 4 views
2

Meine Frage ist ziemlich einfach: Sind Gestenerkenner und KVOs gelöscht, wenn UIViewController auf Null gesetzt ist?ARC - Werden Gestenerkenner und KVOs behandelt, wenn UIViewController auf Null gesetzt ist?

Ich habe ein Projekt, wo der Benutzer einige komplexe UIViewController-basierte Instanzen erstellen und löschen kann. Diese werden in einem NSMutableArray gespeichert.

Wenn ich einfach die Instanz aus dem Array lösche und sie dann auf nil setze (was ich für überflüssig halte), werden alle @properties der Instanz gelöscht (vorausgesetzt, es gibt keine weiteren Verweise darauf)?

EDIT ich den Alarm (Fehler) unten, wenn ich die KVOs nicht verwalten - so dass ich denke, die Antwort ist ‚Nein‘

Eine Instanz 0xce26d40 der Klasse Spur während Schlüssel freigegeben wurde Wertbeobachter waren noch bei ihm registriert. Die Beobachtungsinformationen sind durchgesickert und können sogar versehentlich mit einem anderen Objekt verbunden werden. Legen Sie einen Haltepunkt für NSKVODeallocateBreak fest, um hier im Debugger zu stoppen. Hier ist die aktuelle Beobachtung Info: ( Kontext: 0x0, Eigentum: 0x7530300> Kontext: 0x0, Eigentum: 0x75320f0>

Antwort

3

Ein Objekt besitzt seine '@properties' (unter der Annahme, dass sie strong oder retain). Und eine Ansicht besitzt alle Gestenerkenner, die hinzugefügt werden.Wenn das Objekt also freigegeben wird, werden seine Eigenschaften und Erkennerfreigegeben und freigegeben, wenn niemand sie besitzt

Schlüsselwertbeobachter und Benachrichtigungsbeobachter müssen sein manuell abgemeldet, bevor sie freigegeben werden

+0

ok - das macht Sinn. Vielen Dank! –

Verwandte Themen