如果接收器类符合 NSKeyValueProtocol,则可以选择走很长的路:
[myInstance setValue:[NSNumber numberWithInt:2] forKey:@"integerProperty"];
或捷径:
myInstance.integerProperty = 2;
这种 KVC 方法的意义何在?这什么时候有用?
如果接收器类符合 NSKeyValueProtocol,则可以选择走很长的路:
[myInstance setValue:[NSNumber numberWithInt:2] forKey:@"integerProperty"];
或捷径:
myInstance.integerProperty = 2;
这种 KVC 方法的意义何在?这什么时候有用?
首先,那些不一样,第二个应该是:
myInstance.integerProperty = [NSNumber numbwerWithInt:2];
如果integerProperty
是NSNumber
.
一般来说,当你做最多的事情时,你会使用第二种形式。当你想动态选择存储东西的属性时,你可以使用setValue:forKey:
and在那个值:valueForKey:
valueForKeyPath:
NSArray
-valueForKey:
NSArray
NSArray
- (NSArray *) valueForKey:(id)key {
NSMutableArray *retval = [NSMutableArray array];
for (NSObject *object in self) {
[retval addObject:[object valueForKey:key]];
}
return retval;
}
在上述情况下,valueForKey:
即使我们事先不知道键是什么,我们也可以使用它来实现我们的函数,因为它是作为参数传入的。