改变NSOperation优先级的安全方法

use*_*444 6 iphone macos cocoa cocoa-touch

有没有一种安全的方法来改变已经在NSOperationQueue中排队的NSOperation的优先级?如果操作尚未启动,则没有问题,但如果它已经在执行,则会出现NSInvalidArgumentException.

Bra*_*son 11

一旦排队,你就不应该改变NSOperation.根据Apple的线程编程指南:

重要提示:在将操作对象添加到队列后,切勿对其进行修改.在队列中等待时,操作可以随时执行.在执行期间更改其状态可能会产生不利影响.您可以使用操作对象的方法来确定操作是否正在运行,等待运行或已完成.