ios - performSelector 未在 iPhone 5 和 7 Plus 中调用

标签 ios objective-c

以下代码请求相机许可并显示视频。必须在 9 秒后调用函数 videoFinished。这在 iphone 5 和 7 plus 中不起作用。

       [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted){
       if(granted)
       {
           dispatch_sync(dispatch_get_main_queue(), ^{
               [self.player play];
               [self performSelector:@selector(videoFinished) withObject:nil afterDelay:9];
           });

       }
       else
       {
           dispatch_sync(dispatch_get_main_queue(), ^{
              [self noPermission];
           });
       }

编辑

               [self.player play];
               [self performSelector:@selector(videoFinished) withObject:nil afterDelay:9];

这段代码也没有调用 videoFinished 方法。

最佳答案

dispatch_sync(dispatch_get_main_queue() 当您已经在主队列中时,将其锁定。 使用 dispatch_async

并使用 dispatch_after 片段代替 performSelector:...afterDelay

关于ios - performSelector 未在 iPhone 5 和 7 Plus 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161541/

相关文章:

ios - BLE 以编程方式发送 key

iphone - iPhone中的UIWebView全屏视频

objective-c - 如何旋转 NSTextView

ios - 统治所有模块的容器应用程序

ios - 渐变层不适用于横向模式。 swift

objective-c - 为什么 ARC 中的 __weak 指针没有设置为 nil?

objective-c - Objective C 中的动态绑定(bind)与动态类型之间有什么区别

ios - Xcode 10 词法或预处理器问题 .h 文件未找到

iOS 6 - UIActivityViewController 项目

ios - 如何让动画旋转同步图像一段时间