2013-03-01 73 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