我正在编写一个接收OSC消息的应用程序。然而,由于10.9的App-Nap技术,应用程序在离开前台后停止对这些消息的反应。我想禁用在10.9上运行的应用程序的AppNap,但仍然可以在10.8上运行,所以我尝试了这段代码,但它没有显示任何效果。
if ([[NSProcessInfo processInfo] respondsToSelector:@selector(beginActivityWithOptions:reason:)]) {
[[NSProcessInfo processInfo] beginActivityWithOptions:0x00FFFFFF reason:@"receiving OSC messages"];
}请参阅github上的完整代码。
if条件看起来像预期的那样工作,并在10.9机器上执行。但尽管如此,应用程序还是会进入休眠状态。(Activity Monitor对我的应用程序显示"App Nap: Yes“)。
谢谢你的帮忙!
发布于 2013-11-21 00:06:41
该活动需要存储在属性中。因此,我在头文件中添加了以下内容:
@property (strong) id activity;然后使用这个实现。
if ([[NSProcessInfo processInfo] respondsToSelector:@selector(beginActivityWithOptions:reason:)]) {
self.activity = [[NSProcessInfo processInfo] beginActivityWithOptions:0x00FFFFFF reason:@"receiving OSC messages"];
}感谢所有的贡献者!
发布于 2013-11-13 23:15:29
从你对问题的描述中,听起来你可能想看一看WWDC2013 704,并回顾一下(接近尾声)关于后台连续工作的部分。查看一下setpriority命令的手册可能也会有所帮助。我没有必要禁用应用程序nap,但我认为手动更改进程优先级是一个很好的方法。
2013 WWDC Video 205 (靠近中间)描述了应用程序nap的一些有趣的方面,这些方面可能会影响应用程序是否被限制的结果。来自WWDC2013的视频209提供了以下关于遮挡(应用程序nap接合的点)的屏幕截图可能会很有用。



希望这能有所帮助。
https://stackoverflow.com/questions/19847293
复制相似问题