aboutsummaryrefslogtreecommitdiff
path: root/main.m
diff options
context:
space:
mode:
Diffstat (limited to 'main.m')
-rw-r--r--main.m37
1 files changed, 37 insertions, 0 deletions
diff --git a/main.m b/main.m
index 1839123..ef6c88f 100644
--- a/main.m
+++ b/main.m
@@ -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];