2013-03-01 71 views
1

我希望能够执行一段在字符串中定义的代码。我知道performSelector:但是执行选择器的对象将会不同。执行在字符串中定义的代码

例串

[[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] hasFlash] 
[UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront] 

所以我希望做的是沿着

SEL selector = NSSelectorFromString(@"[[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] hasFlash]"); 
if (selector) { 
    // Show flash buttons 
} 
+1

Sorr Ÿ,不可能:http://stackoverflow.com/questions/10158036/eval-in-objective-c – fguchelaar 2013-03-01 10:50:45

+1

只是想了一会儿:是不是Objective-C的编译语言?你的手机是否有编译器? 让我们多考虑一下:这不会造成安全问题吗? – ppeterka 2013-03-01 10:50:55

回答

2

线的东西你不能选择调用一个嵌套的方法调用

选择器与显示为method:abc:yxa:

如下语句的参数个数唯一方法名称:

SEL selector = NSSelectorFromString(@"[[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] hasFlash]"); 

呼吁

[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] 

然后

[objectReturnedByAbove hasFlash] 
+0

-1请原谅这个?? – 2013-03-01 11:31:31

+0

我明白了。我可以通过分解字符串来解决这个问题,但是有更好的解决方案。谢谢! – user2123173 2013-03-04 09:05:04

+0

几个星期前,我需要类似的东西,我发布,并得到很多downvotes和问题被删除。你应该感谢大家,因为你的问题仍然存在:D – 2013-03-04 09:07:33