gpt4 book ai didi

iphone - NSRunLoop长时间延迟后正在调用我的选择器

转载 作者:行者123 更新时间:2023-12-01 16:57:24 26 4
gpt4 key购买 nike

问题陈述:我们有一个辅助线程在其中进行所有后端处理,在这个辅助线程中,我们创建了一个单独的NSRunLoop来运行。我们在此运行循环中创建并使用计时器

    NSAutoreleasePool *myPool = [[NSAutoreleasePool alloc] init];
NSRunLoop * threadRL = [NSRunLoop currentRunLoop];
[threadRL addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[threadRL run];
[myPool release];

一切正常,除了对选择器的调用要花费几乎10秒才能执行,而且并非每次都随机发生。
[myclass performSelector:@selector(func) onThread:myThread withObject:nil waitUntilDone:NO];

我也尝试了这一点。
[myclass performSelector:@selector(func) onThread:myThread withObject:nil waitUntilDone:NO modes:[NSArray arrayWithObjects: NSDefaultRunLoopMode, NSRunLoopCommonModes,nil]];

我没有在func中执行任何可能会花费这么长时间的任务,

我在想的是,runloop可能处于不同的模式。

有没有一种方法可以使资金以最高优先级执行,即运行循环中正在执行的操作被中断或类似的操作。

最佳答案

您可以创建一个NSTimer并将firedate设置为现在。请参阅下面的示例代码。

  NSTimer *timer = [[NSTimer alloc] initWithFireDate:now
interval:.01
target:myClass
selector:@selector(funct)
userInfo:nil
repeats:NO];

NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:timer forMode:NSDefaultRunLoopMode];
[runLoop run];

关于iphone - NSRunLoop长时间延迟后正在调用我的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10577598/

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