20

我有一个 MVC 应用程序。该模型具有一个 struct 属性NSSize。可以这样写:

- (void)setSize:(NSSize)aSize;

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

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

据我了解,这应该不起作用,因为访问器需要一个 struct 而不是NSValue. 但它完美地工作。神奇地。

这怎么可能?

4

1 回答 1

12

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

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

顺便说一句,感谢您提出这个问题!这是那些一直“正常工作”的可可事物之一,我从不认为它是如何完成的并不明显。

于 2010-03-22T20:48:37.890 回答