2009-08-20 17 views
4

Als ich mehr über KVO und KVC lernen, habe ich neugierig geworden -Automatische Schlüsselwert in Cocoa Beobachten

Wie funktioniert die automatische KVO NSObject zu liefern, wenn Setter-Methoden zugreifen?

Wenn ich ein neues Objekt mit einem Accessor erstellen setName genannt,

wie sieht ein Beobachter benachrichtigt, wenn someon ruft

[obj setName: @ "Mystery"];

Dank für jedes Feedback

Antwort

11

erkläre ich immer an Menschen, dass „nichts Magie in Cocoa ist;. Es ist nur Code“ Aber KVO grenzt an Magie. Es heißt Isa-Swizzling. Ihre Klasse wird zur Laufzeit (das erste Mal, wenn Sie jemand beobachtet) in eine dynamisch generierte Unterklasse umgewandelt, die alle Getter und Setter überlädt. Aufrufe an -class sind verdrahtet, um Sie zu belügen und die alte Klasse zurückzugeben, so dass Sie die magischen Unterklassen außer im Debugger nicht sehen werden, wenn Sie direkt auf den Zeiger isa schauen.

Zu bemerken, dass KVO bizarr sein muss, ist ein wichtiger Schritt in der Aufklärung von Kakao. Herzliche Glückwünsche.

Key-Value Observing Implementation Details