2011-06-22 82 views
2

如果我有一類成員,可以說在UIImageView的我的ViewController:如何通過它的字符串名稱獲取類成員對象?

UIImageView* imageView = self.memberImageView1; 

有沒有一種方法可以讓我得到的字符串,這個成員? somthing like:

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

當然,我正在談論與Objective-C語法的解決方案,而不是自定義。 謝謝。

+0

[使用表示變量名稱的字符串來設置變量的可能的重複](http://stackoverflow.com/questions/5680284/using-a-string-representing-the-name-of-a -variable-to-set-the-variable) –

回答

6

我建議Key Value Coding反思之前。

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

不錯,我不知道這個 – Jim

+0

雅由於isa的混合和其他有趣的事情有很多方法來訪問和設置類的價值。我使用這些方法進行自定義序列化。查看一些其他方法,如 - [NSObject dictionaryWithValuesForKeys:] http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSKeyValueCoding_Protocol/Reference/Reference.html – Joe

+2

這將工作,但使用這種鬆散耦合模式很不常見。當然,可以完成並且有用處,但是你通常想要堅持緊密耦合的模式,這些模式可以被編譯器完全驗證。 – bbum

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

相關問題