如何通过它的字符串名称获取类成员对象?

时间:2011-06-22 15:09:50

标签: objective-c

如果我有一个类成员,我可以在我的viewcontroller中说UIImageView:

UIImageView* imageView = self.memberImageView1;

有没有办法可以通过字符串获取此成员?像是这样的事情:

UIImageView* imageView =[self.getMember(@"memberImageView1")];

当然我在谈论使用objective-c语法的解决方案,而不是自定义。 感谢。

3 个答案:

答案 0 :(得分:6)

我在反思之前建议Key Value Coding

UIImageView* imageView =[self valueForKey:@"memberImageView1"];

答案 1 :(得分:1)

要做这种事情,你可以使用反射:

Objective-C Runtime Reference

另一种方法是使用带有字符串的Dictionary作为指向类变量的键。

答案 2 :(得分:1)

为了完整起见,完全基于疯狂的方式如下:

UIImageView *imageView;

SEL selector = NSSelectorFromString(@"memberImageView1");
NSMethodSignature *signature = [self instanceMethodSignatureForSelector:selector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];

[invocation setSelector:selector];
[invocation setTarget:self];
[invocation invoke];
[invocation getReturnValue:&imageView];

请随时发送至Daily WTF