aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArslaan Pathan <[email protected]>2026-10-02 10:33:02 +1300
committerArslaan Pathan <[email protected]>2026-10-02 10:33:02 +1300
commit4266447d1b3757ac6707c2617cb3e4b8c63aaa60 (patch)
tree22a77877ff5d1ffeb68a575d1331da9291995142
parent2596e3661cb3da70b289f9a97802383eb8e1d5bb (diff)
downloadobjc-test-4266447d1b3757ac6707c2617cb3e4b8c63aaa60.tar.xz
objc-test-4266447d1b3757ac6707c2617cb3e4b8c63aaa60.zip
predicates/filtering and observers/KVOHEADmain
-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];