objc_property_t iOS问题

时间:2011-09-07 13:06:31

标签: iphone objective-c ios

如果我从文档中了解到这一点:

objc_property_t theProperty = class_getProperty([self class], [name UTF8String]);

我得到了财产的报复。我不明白如何将此结构“转换”为UIImageView * imageView_1,以便能够将图像设置为此imageVIew_1。

2 个答案:

答案 0 :(得分:1)

objc_property_t是一种不透明的类型。它基本上是一个描述属性的C结构,在类级别。 它与特定实例的值无关。

换句话说,您无法使用class_getProperty获取属性值。

还要记住,属性意味着一个getter方法。因此,如果要访问属性,可以调用getter方法。

请注意,您可以使用object_getInstanceVariable函数获取实例变量的值。

Ivar object_getInstanceVariable(id obj, const char *name, void **outValue)

那么,为什么要使用运行时来访问属性?

也许你正在做一些非常复杂的反思,但除此之外,我建议你避免运行时。

出了什么问题:

object.propName

[ object propName ];

答案 1 :(得分:1)

嗯,怎么说这个,但有更容易的方法来解决这个问题,它的名字是KVC。 像这样:

UIImageView *img = [self valueForKey:[NSString stringWithFormat:@"image%d", floor(myFloat)]];

显然,由于缺乏知识,我选择了一种更难以运行的东西。我将KVC与Core Data结合使用并没有意识到所有可能性。好好学习永远不会结束:)