在iOS 4(iPhone)上使用NSOperationQueue和NSInvocationOperation时出现严重的减速问题。

5
我有一个耗时的操作O,通过NSInvocationOperation调用,本身被添加到NSOperationQueue中以异步运行。我的应用程序中有两种情况下会调用这个长时间运行的操作O。
在情况A下,当点击某些视图中的小部件时,操作O被调用。一旦点击了小部件,操作O会运行一段时间(我可以通过UIActivityIndicator看到),但它不会减慢或阻塞UI,因此当操作O正在运行时,我能够点击其他小部件并执行其他UI操作。
在情况B下,由于接收到本地通知,在应用程序委托的didReceiveLocalNotification方法中调用操作O。在这种情况下,在调用操作O后立即执行的UI操作在didReceiveLocalNotification方法中明显变慢,基本上几乎像操作O占用了CPU一样。
为什么会这样,并且在情况B下,调用操作O的正确方式是什么,以便它确实以较低优先级在后台并发运行,使得didReceiveLocalNotification方法中的其余代码正常运行?
注意:操作O涉及到本地通知(删除现有通知或安排新通知)和日历(查询事件存储以更好地安排本地通知)。
1个回答

0
你尝试过降低线程优先级吗?
这只适用于iOS 4,但你可以在NSInvocationOperation上调用方法setThreadPriority

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接