//Properties@property (nonatomic) BOOL isfinished;
//Register for monitoring[Self addobserver:self Forkeypath:@"isfinished"Options0Context:null];
//Responding to change events- (void) Observevalueforkeypath: (NSString *) KeyPath Ofobject: (ID)ObjectChange: (nsdictionary *) Change context: (void*) context{if([KeyPath isequaltostring:@"isfinished"]) {NSLog (@"changeeddd"); } Else{[Super Observevalueforkeypath:keypath Ofobject:ObjectChange:change Context:context]; }}
//changing attribute values[button addtarget:self action: @selector (changefinished:) forcontrolevents:uicontroleventtouchupinside];-(void) Changefinished: (ID) Sender {//Automatic Notification[Self setvalue:[nsnumber numberwithbool:yes] Forkey:@"isfinished"];}
Register Listener Parameters Options
Nskeyvalueobservingoptionnew indicates that the property has not changed? previous value;
Nskeyvalueobservingoptionold represents the value after the property has changed;?
To remove a viewer:
[Subject Removeobserver:observer forkeypath:@ "name"];
KVO equivalent to Java:
Account.setlistener (New MyListener () {
Inspector.method ();
});
However, it is not necessary to declare a MyListener interface as in Java, nor to create a new Setlisteber (MyListener Listener) in the account class, so it is more flexible, but cannot be easily assigned when changing properties!
[iOS Learning Notes] KVO