gpt4 book ai didi

ios - NSOperation 队列优先级未按预期工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:07 25 4
gpt4 key购买 nike

我正在研究 NSOperation 类并尝试模拟一种情况,当我需要管理操作的优先级时。

请考虑以下代码:

@implementation MyOperation // First custom NSOperation class


- (void)main {

@autoreleasepool {

NSLog(@"First operation start");
}
}

@implementation MySecondOperation // Second custom NSOperation class

- (void)main {

@autoreleasepool {

NSLog(@"Second operation start");
}
}

@implementation ViewController // Other class using NSOperations

- (void)viewDidLoad {

NSOperationQueue *myQueue = [NSOperationQueue new];

MyOperation *firstOperation = [MyOperation new];

MySecondOperation *secondOperation = [MySecondOperation new];

[firstOperation setQueuePriority:NSOperationQueuePriorityLow];
[secondOperation setQueuePriority:NSOperationQueuePriorityHigh];

[myQueue addOperation:secondOperation];
[myQueue addOperation:firstOperation];

}

代码非常简单。但是,您会惊讶地看到输出:

2015-08-12 20:32:09.433 NSOperationTesting[1181:39809] First operation start
2015-08-12 20:32:09.433 NSOperationTesting[1181:39811] Second operation start

具有较低优先级的 NSOperation 在操作之前开始,具有较高的优先级。我知道,NSOperationQueue 按 FIFO 顺序工作,但是,我专门设置了两个操作的优先级,那么为什么第一个操作先完成?它应该在第二个之后(具有更高的优先级)。

最佳答案

尝试将 myQueue.maxConcurrentOperationCount 设置为 1。我的猜测是它正在同时运行您的操作。

关于ios - NSOperation 队列优先级未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31971932/

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