gpt4 book ai didi

iphone - 编写 NSOperation 友好的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:12 26 4
gpt4 key购买 nike

我有一个对象 (Processor),其中包含几个执行冗长计算的方法。我想在主线程和 NSOperation 子类中使用这些方法。

在我的 NSOperation 子类代码中,我重复调用了 isCancelled,因此取消响应相当灵敏。但是,当操作调用那些冗长的 Processor 方法之一时,它无法响应取消,直到该方法返回。

有没有一种好的方法来编写方法,使它们可以在有操作和没有操作的情况下使用?我正在考虑向我的 CPU 密集型 Processor 方法添加一个 operation 参数并像这样编写它们:

- (void)calculateWithOperation:(NSOperation *)operation {
do {
if (operation != nil && [operation isCancelled]) {
return;
}
// Do some more calculation...
} while (! finished);
}

// For convenient main thread execution.
- (void)calculate {
[self calculateWithOperation:nil];
}

有没有其他人遇到过这个问题?有没有更好的办法?

最佳答案

NSOperation 响应取消的唯一方法是尽可能频繁地检查它是否被取消。毕竟,这只是一个需要在设置标志时退出的线程。基本上,需要 isCancelled 基础结构来优雅地释放操作的资源。所以我想说你只需要用支票来支付昂贵的费用。

关于iphone - 编写 NSOperation 友好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com