如果我从文档中了解到这一点:
objc_property_t theProperty = class_getProperty([self class], [name UTF8String]);
我得到了财产的报复。我不明白如何将此结构“转换”为UIImageView * imageView_1,以便能够将图像设置为此imageVIew_1。
答案 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结合使用并没有意识到所有可能性。好好学习永远不会结束:)