Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone objc_属性iOS问题_Iphone_Objective C_Ios - Fatal编程技术网

Iphone objc_属性iOS问题

Iphone objc_属性iOS问题,iphone,objective-c,ios,Iphone,Objective C,Ios,如果我从文档中了解到: objc_property_t theProperty = class_getProperty([self class], [name UTF8String]); 我得到了有关该物业的证明。我不明白如何将此结构“强制转换”为UIImageView*imageView_1,例如,能够将图像设置为此imageView_1。objc_属性\u t是不透明类型。它基本上是一个C结构,在类级别描述属性。 它与特定实例的值无关 换句话说,您无法使用class\u getProper

如果我从文档中了解到:

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

我得到了有关该物业的证明。我不明白如何将此结构“强制转换”为UIImageView*imageView_1,例如,能够将图像设置为此imageView_1。

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

换句话说,您无法使用
class\u getProperty
获取属性值

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

请注意,可以使用
object\u getInstanceVariable
函数获取实例变量的值

Ivar object_getInstanceVariable(id obj, const char *name, void **outValue)
顺便问一下,为什么要使用运行时访问属性?

也许您正在做一些非常复杂的反射工作,但除此之外,我建议您避免使用运行时

有什么问题吗

object.propName


Hm,怎么说呢?但解决这个问题有更简单的方法,它的名字是KVC。 大概是这样的:

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

显然,由于缺乏知识,我选择了一种更难处理运行时内容的方法。我将KVC与核心数据结合使用,并没有意识到所有的可能性。好的学习永远不会结束:)

行就在那里,我没有做打字,但我被期望像UILabel*label=(UILabel*)那样的属性,但它不能这样:)第1部分:我会尝试解释它,也许那样对你更有意义;)假设应用程序正在等待来自ws的一些数据,当数据可用时,您需要在视图中显示它。有一段数据是有价值的,基于该价值,您需要显示一些图像。它是浮动值,即3.47。基于该值,您需要显示3个图像,因为分数部分小于0.5,所以第4个图像应以其他方式显示。当你计算这些完整的部分和分数时,你需要弄清楚你需要显示哪些图像……第二部分:视图上有一行10个图像,因为这里是3.5个,前3个应该以一种方式显示,第4个应该以另一种方式显示。对我来说,获取负责这些图像的属性名数组是合乎逻辑的,唯一的问题是如何将不透明指针“强制转换”到UIImage。有了它,我将得到一个需要更新property=image的引用。我尽量避免使用基于属性名称的“if-else”,这就是为什么我会问“cast”的原因。我承认,自从大学二年级以来,我对C语言的东西不太熟悉,好久不见了。第三部分:另外,如果你有更好的想法,我很乐意接受,并以这种方式实施。我承认还有很多其他的方法,也许更好更简单,但在我写这篇文章的时候,这就是我的逻辑。(很抱歉,这是我的第一条评论,限制在500个字符以内,我不知道如何输入,或者如果可能的话:))
UIImageView *img = [self valueForKey:[NSString stringWithFormat:@"image%d", floor(myFloat)]];