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

-(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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。