Objective c 有没有办法得到一处房产';目标C中的s类型?
可能重复:Objective c 有没有办法得到一处房产';目标C中的s类型?,objective-c,ios,xcode,Objective C,Ios,Xcode,可能重复: 有没有办法在Objective-C中获取属性的类型?我可以像这样访问该属性: objc_property_t* properties = class_copyPropertyList(cl, &count); property_getName(properties[i]); 并获得如下名称: objc_property_t* properties = class_copyPropertyList(cl, &count); property_getName(pr
有没有办法在Objective-C中获取属性的类型?我可以像这样访问该属性:
objc_property_t* properties = class_copyPropertyList(cl, &count);
property_getName(properties[i]);
并获得如下名称:
objc_property_t* properties = class_copyPropertyList(cl, &count);
property_getName(properties[i]);
但我需要做的是得到类型。而且,在大多数情况下,该值将是
nil
,因此我不能仅仅通过调用object\u getClass()
来获取该值,而不是在您似乎在问的意义上-在Objective-C中,类是无类型的;当处理“it's a class”以外的非C类型时,属性的类型在运行时是未知的。这就是为什么如果在视图控制器中执行以下愚蠢操作:
[self setValue:@3 forKey:@"view"];
当控制器试图将视图消息发送到NSNumber
而不是通过键值编码机制发送时,您会看到引发的异常,因为您试图将非视图的内容放入不适当的属性中
解析
property\u getAttributes
只允许您将各种C文本类型与Objective-C对象类型区分开来。这并不是您似乎在问的问题——在Objective-C中,类是无类型的;当处理“it's a class”以外的非C类型时,属性的类型在运行时是未知的。这就是为什么如果在视图控制器中执行以下愚蠢操作:
[self setValue:@3 forKey:@"view"];
当控制器试图将视图消息发送到NSNumber
而不是通过键值编码机制发送时,您会看到引发的异常,因为您试图将非视图的内容放入不适当的属性中
解析
property\u getAttributes
只允许您将各种C文本类型与Objective-C对象类型区分开来。请参见:;还请注意,查找您要查找的内容的好关键字是:objective-c reflection InspectionUseproperty\u getAttributes(properties[i])
还请注意,objective-c的设计并不是为了支持这种级别的运行时动态行为。通常情况下,设计一个能够在代码中的正式API中捕获所需动态性的系统(而不是基于@proeprty或@encode生成的元数据)要好得多;还请注意,查找您要查找的内容的好关键字是:objective-c reflection InspectionUseproperty\u getAttributes(properties[i])
还请注意,objective-c的设计并不是为了支持这种级别的运行时动态行为。通常情况下,设计一个能够在代码中的正式API中捕获所需动态性的系统(而不是基于@proeprty或@encode生成的元数据)要好得多。