gpt4 book ai didi

objective-c - 为什么 NSOperations 和 sleep 不能正常工作?

转载 作者:行者123 更新时间:2023-12-03 16:58:34 26 4
gpt4 key购买 nike

在我的应用程序中,我使用操作来执行时间密集型任务,因此我的用户界面不会卡住。为此,我使用 NSInitationOperation。我想在实现代码以实际完成任务之前先测试整体架构,所以这就是我现在所拥有的:

// give the object data to process
- (void)processData:(NSObject*)dataToDoTask {

... // I store the data in this object

NSInvocationOperation *newOperation =
[[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(performTask)
object:nil];

[[NSOperationQueue mainQueue] addOperation:newOperation];

...

}

// process data stored in the object and return result
- (NSObject*)performTask {

[NSThread sleepForTimeInterval:1]; // to emulate the delay
return [NSString stringWithFormat:@"unimplemented hash for file %@", self.path];
}

但是, sleep 并没有像我预期的那样工作:它没有延迟操作完成,而是卡住了应用程序。看来我要么操作不正确,要么 sleep 不正确,但我不知道是哪一个以及如何。

最佳答案

这是因为您正在主线程上运行操作(与运行用户界面的操作相同)。

如果您想同时运行操作,请创建一个新的操作队列:

NSOperationQueue * queue = [NSOperationQueue new];
[queue addOperation:newOperation];

关于objective-c - 为什么 NSOperations 和 sleep 不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10972273/

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