小编bac*_*plz的帖子

我可以同时运行两个音频会话吗?

我使用AVFoundation框架中的AVCamCaptureManager类.同时我想用音量增大按钮拍照.

据我所知,现在唯一可行的解​​决方案是使用音频会话(打开它并听取音量的变化).我从这里开始使用RBVolumeButtons类https://github.com/blladnar/RBVolumeButtons

当我的应用程序启动时,AVCamCaptureManager初始化音频会话.然后我需要开始收听音量的变化,因此RBVolumeButtons初始化一个新的音频会话,它会中断前一个音频会话.因此,相机停止,但我可以使用音量按钮.

如何避免这种中断,以及如何同时使用音量按钮和相机?也许我可以同时运行两个音频会话?或者也许有办法访问AVCamCaptureManager的音频会话并使用它?

非常感谢你回答我的问题!

PS我使用这一行在RBVolumeButtons类中添加属性监听器:

AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume, volumeListenerCallback, self);
Run Code Online (Sandbox Code Playgroud)

objective-c avfoundation audiosession ios

5
推荐指数
0
解决办法
693
查看次数

dipatch_async释放局部变量

我没有在网上找到任何合适的答案,所以我在这里发布我的问题.

__block int test = 1;
dispatch_async(dispatch_get_main_queue(), ^{
    test = 2;
});
NSLog(@"%i",test);
Run Code Online (Sandbox Code Playgroud)

此代码将导致控制台消息"1".

__block NSString *test = @"no";
dispatch_async(dispatch_get_main_queue(), ^{
    test = @"yes";
});
NSLog(@"%@",test);
Run Code Online (Sandbox Code Playgroud)

此代码将导致控制台消息"no".

为什么会这样?我认为__block标识符应解决这种情况下的所有问题.我的假设是复制了局部变量,并且块内的代码实际上并没有修改自身之外的任何东西.

如何在dispatch_async中修改局部变量?

对不起,如果这是一个菜鸟问题.

cocoa multithreading objective-c objective-c-blocks

0
推荐指数
1
解决办法
575
查看次数