You observe keys to be notified when their value changes. The data type can be anything. For anything defined as an Objective-C property (with @property in the .h file) this is ready to go so if you want to observe a BOOL property you add to a view controller you do it as follows:
@implementation myViewController
@synthesize mySetting;
// rest of myViewController implementation
@end
in otherViewController.m:
// assumes myVC is a defined property of otherViewController
- (void)presentMyViewController {
self.myVC = [[[MyViewController alloc] init] autorelease];
// note: remove self as an observer before myVC is released/dealloced
[self.myVC addObserver:self forKeyPath:@"mySetting" options:0 context:nil];
// present myVC modally or with navigation controller here
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object == self.myVC && [keyPath isEqualToString:@"mySetting"]) {
NSLog(@"OtherVC: The value of self.myVC.mySetting has changed");
}
}
You observe keys to be notified when their value changes. The data type can be anything. For anything defined as an Objective-C property (with @property in the .h file) this is ready to go so if you want to observe a BOOL property you add to a view controller you do it as follows:
in myViewController.h:
in myViewController.m
in otherViewController.m:
Yes; the only requirement is that the object in which those variables occur are key-value compliant for those properties.
If they are properties of objects then yes.
If they are not properties then no.
I believe what you meant was: How to get INT or BOOL value from the 'change' dictionary if the property has changed.
You can simply do it this way: