有没有办法在Objective-C中获取属性的类型?我可以这样访问该属性:
objc_property_t* properties = class_copyPropertyList(cl, &count);
得到这样的名字:
property_getName(properties[i]);
我需要做的是得到类型。此外,在大多数情况下,该值为nil
,因此我无法获得调用object_getClass()
的值。
答案 0 :(得分:4)
不是你似乎在问的意思 - 在Objective-C类中是无类型的;当处理超出'它是一个类'的非C类型时,在运行时不知道属性的类型。这就是为什么如果你在视图控制器中做如下的傻事:
[self setValue:@3 forKey:@"view"];
当控制器尝试向NSNumber
而不是键值编码机制发送视图消息时,您会看到异常,因为您尝试将不是视图的内容放入不恰当的财产。
解析property_getAttributes
将使您不再区别于各种C文字类型与Objective-C对象类型。