3

如果接收器类符合 NSKeyValueProtocol,则可以选择走很长的路:

[myInstance setValue:[NSNumber numberWithInt:2] forKey:@"integerProperty"];

或捷径:

myInstance.integerProperty = 2;

这种 KVC 方法的意义何在?这什么时候有用?

4

1 回答 1

3

首先,那些不一样,第二个应该是:

myInstance.integerProperty = [NSNumber numbwerWithInt:2];

如果integerPropertyNSNumber.

一般来说,当你做最多的事情时,你会使用第二种形式。当你想动态选择存储东西的属性时,你可以使用setValue:forKey:and在那个值:valueForKey:valueForKeyPath:NSArray-valueForKey:NSArrayNSArray

- (NSArray *) valueForKey:(id)key {
  NSMutableArray *retval = [NSMutableArray array];

  for (NSObject *object in self) {
    [retval addObject:[object valueForKey:key]];
  }

  return retval;
}

在上述情况下,valueForKey:即使我们事先不知道键是什么,我们也可以使用它来实现我们的函数,因为它是作为参数传入的。

于 2009-07-22T09:19:03.140 回答