有没有办法在Objective-C中获取属性的类型?

时间:2012-12-07 20:10:15

标签: objective-c ios xcode

  

可能重复:
  How to detect a property return type in Objective-C

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

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

得到这样的名字:

property_getName(properties[i]);

我需要做的是得到类型。此外,在大多数情况下,该值为nil,因此我无法获得调用object_getClass()的值。

1 个答案:

答案 0 :(得分:4)

不是你似乎在问的意思 - 在Objective-C类中是无类型的;当处理超出'它是一个类'的非C类型时,在运行时不知道属性的类型。这就是为什么如果你在视图控制器中做如下的傻事:

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

当控制器尝试向NSNumber而不是键值编码机制发送视图消息时,您会看到异常,因为您尝试将不是视图的内容放入不恰当的财产。

解析property_getAttributes将使您不再区别于各种C文字类型与Objective-C对象类型。