NSValue如何发挥其魔力?

时间:2010-03-22 20:29:10

标签: objective-c struct key-value-coding

我有一个MVC应用程序。该模型具有结构NSSize的属性。这是可写的:

- (void)setSize:(NSSize)aSize;

视图使用键值编码设置此NSSize。但是,您不能对结构进行键值编码,因此我将其包装在NSValue对象中,如下所示:

[theView setValue:[NSValue valueWithSize:mySize]
           forKey:@"theModel.size"];

根据我的理解,这应该不起作用,因为访问者需要一个结构而不是NSValue。但它完美无缺。神奇。

这怎么可能?

1 个答案:

答案 0 :(得分:12)

向下滚动到“Wrapping and Unwrapping Structs”,但这是要点:

  

setValue:forKey:确定指定键的相应访问者或实例变量所需的数据类型。如果数据类型不是对象,则使用适当的-<type>Value方法从传递的对象中提取值。

不过,谢谢你提出这个问题!这是那些一直“正常工作”的可可物之一,我从未认为它是如何完成的并不明显。