Tag: 键值编码

如何使用Key-Value Coding来判断对象是否存在一个对象?

我想testing一个对象是否在iPhone SDK中有一个可写的@property。 这样做的一个可能的方法是检查-valueForKey:方法,但这似乎相当不雅! 例: @try { id *value = [instance valueForKey:@"myProperty"]; } @catch (NSException * e) { // Key did not exist } 有没有更好的方法来做到这一点?

观察一个NSMutableArray插入/删除

一个类有一个types为NSMutableArray的属性(和实例@property )和合成访问器(通过@property )。 如果你观察这个数组,使用: [myObj addObserver:self forKeyPath:@"theArray" options:0 context:NULL]; 然后像这样在数组中插入一个对象: [myObj.theArray addObject:NSString.string]; 一个observeValueForKeyPath …通知不会被发送。 但是,以下内容会发送正确的通知: [[myObj mutableArrayValueForKey:@"theArray"] addObject:NSString.string]; 这是因为mutableArrayValueForKey返回一个代理对象,负责通知观察者。 但是,不应该合成访问器自动返回这样一个代理对象? 什么是正确的方法来解决这个问题 – 我应该写一个自定义访问器,只是调用[super mutableArrayValueForKey…] ?

objectForKey和valueForKey之间的区别?

objectForKey和valueForKey什么区别? 我在文档中查找了两个,他们对我来说也是一样的。