1

可能重复:
如何在 Objective-C 中检测属性返回类型

有没有办法在 Objective-C 中获取属性的类型?我可以像这样访问该属性:

objc_property_t* properties = class_copyPropertyList(cl, &count);

并得到这样的名字:

property_getName(properties[i]);

我需要做的是获取类型。此外,在大多数情况下,价值将是nil,所以我不能只得到价值调用object_getClass()

4

1 回答 1

4

不是你想问的——在 Objective-C 中,类是无类型的;当处理“它是一个类”之外的非 C 类型时,属性的类型在运行时是未知的。这就是为什么如果你在视图控制器中做如下愚蠢的事情:

[self setValue:@3 forKey:@"view"];

当控制器尝试向NSNumber而不是通过键值编码机制发送视图消息时,您将看到引发异常,因为您试图将不是视图的内容放入不适当的属性中。

解析property_getAttributes只允许您将各种 C 文字类型与 Objective-C 对象类型区分开来。

于 2012-12-07T23:02:29.567 回答