diff options
Diffstat (limited to 'main.m')
| -rw-r--r-- | main.m | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -102,6 +102,19 @@ static int playerCount = 0; @end +@interface PlayerObserver : NSObject +@end + +@implementation PlayerObserver + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void*)context { + NSLog(@"PlayerObserver: %@ changed!", keyPath); + NSLog(@"Old: %@", [change objectForKey:NSKeyValueChangeOldKey]); + NSLog(@"New: %@", [change objectForKey:NSKeyValueChangeNewKey]); +} + +@end + int main(void) { @autoreleasepool { Hello *hello = [Hello new]; @@ -139,8 +152,32 @@ int main(void) { NSLog(@"%@", people); + NSArray *players = @[ + @{@"name": @"French Hacker", @"score": @538}, + @{@"name": @"Arslaan", @"score": @53827}, + @{@"name": @"John Hackclub", @"score": @120} + ]; + + NSPredicate *highScore = [NSPredicate predicateWithFormat:@"score > 300"]; + + NSArray *filtered = [players filteredArrayUsingPredicate:highScore]; + + NSLog(@"All players: %@", players); + NSLog(@"High scorers (score > 300): %@", filtered); + + Player *player3 = [Player new]; + PlayerObserver *observer = [PlayerObserver new]; + + [player3 addObserver:observer forKeyPath:@"name" options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew context:NULL]; + [player3 setName:@"Arslaan"]; + [player3 setName:@"Arslaan Pathan"]; + + [player3 removeObserver:observer forKeyPath:@"name" context:NULL]; + [player release]; [player2 release]; + [observer release]; + [player3 release]; [hello release]; [ehello release]; [dehello release]; |
