我为什么要访问对象的属性时,使用KVC,而不是简单的点语法?(Why should I use KV

2019-09-20 03:24发布

有走很长的路,如果接收器类符合NSKeyValueProtocol的选项:

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

或短的路:

myInstance.integerProperty = 2;

这是什么KVC方法的点? 如果是这样有用吗?

Answer 1:

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

myInstance.integerProperty = [NSNumber numbwerWithInt:2];

如果integerProperty是一个NSNumber

一般来说,你使用时,你正在做的最多的事第二种形式。 您使用setValue:forKey: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:实现我们的功能,即使我们不知道的关键是什么事前,因为它是通过在作为参数。



文章来源: Why should I use KVC rather than the simple dot syntax when accessing object properties?