执行字符串中定义的代码

时间:2013-03-01 10:47:26

标签: ios objective-c

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

示例字符串

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

所以我想做的是

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

1 个答案:

答案 0 :(得分:2)

无法触发调用嵌套方法调用选择器

选择器只是显示参数数量为method:abc:yxa:

的方法名称

如下所述:

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

正在调用

[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]

然后

[objectReturnedByAbove hasFlash]