iOS开发

iOS block中赋值作为方法return返回值

2019-05-07  本文已影响0人  风规自远

-(int)openAVAudioSessionRecordPermission {

        AVAudioSessionRecordPermission permissionStatus = [[AVAudioSession sharedInstance] recordPermission];

         if (permissionStatus == AVAudioSessionRecordPermissionUndetermined) {

                 // 创建一个信号量的初始值 

                 dispatch_semaphore_t signal = dispatch_semaphore_create(0);

                 __block int speakSessionIdBlock =0;

                 [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {

                        if(granted) {

                            // block代码中给变量赋值

                            speakSessionIdBlock = 100;

                            // 发送信号 下面的代码一定要写在赋值完成的下面

                            dispatch_semaphore_signal(signal);

                        } else {

                            dispatch_semaphore_signal(signal);

                        }

                    }];

        // 等待执行的方法返回值

        dispatch_semaphore_wait(signal, DISPATCH_TIME_FOREVER);

        return speakSessionIdBlock;

}

上一篇下一篇

猜你喜欢

热点阅读