iPhone - setValue:forkey:没有记录

时间:2012-02-08 10:28:07

标签: objective-c iphone reference key-value-coding

我的代码中有这些行:

[defaults setValue:someValue forKey:@"someValue"];
[animationGroup setValue:@"someValue" forKey:@"someValue"];  // CAAnimationGroup
NSString* animName = [theAnimation valueForKey:@"someValue"]; // CAAnimation

但是阅读Apple参考文档:

我没有看到任何对这些方法的引用,甚至是解析层次结构或一致的协议。他们从哪里来?是否允许使用它们?

2 个答案:

答案 0 :(得分:4)

这些是键值编码方法;如果这些类是符合这些键的键值编码,那么您可以毫无问题地使用它们。关于核心动画,CALayerCAAnimation都符合KVC,详见this programming guide。有关更多一般信息,请参阅NSKeyValueCoding非正式协议和Key-Value Coding Programming Guide

答案 1 :(得分:2)

作为旁注,我也很困惑。上面的链接之一提供:

  

CALayer和CAAnimation都是符合键值编码的容器   类,允许您设置任意键的值。就是这样   键“someKey”不是CALayer类的声明属性,   但是你仍然可以为键“someKey”

设置一个值

意味着您可以安全地发送类似KVC的setValue:forKey:和valueForKey:消息,而不必担心@“someKey”不是真正的KVC兼容属性(因此是“任意键”)。如果在其他对象上尝试此操作,则可能会抛出异常。我承认如果其他类有这种行为,我不确定如何轻松找到 ,在许多其他地方免费获得此行为肯定会有用。