gpt4 book ai didi

iphone: performSelector: withObject: afterDelay: 不适用于后台线程?

转载 作者:太空狗 更新时间:2023-10-30 03:37:00 26 4
gpt4 key购买 nike

我想在后台线程中运行一个方法,第一个方法将在几秒钟后在同一(后台)线程上运行另一个方法。我写了这个:

- (IBAction)lauch:(id)sender
{
[self performSelectorInBackground:@selector(first) withObject:nil];

}
-(void) second {
printf("second\n");
}
-(void) first {
NSAutoreleasePool *apool = [[NSAutoreleasePool alloc] init];
printf("first\n");

[self performSelector:@selector(second) withObject:nil afterDelay:3];

printf("ok\n");
[apool release];
}

但是第二个方法从来没有被调用过,为什么?以及,我怎样才能实现我的目标?

谢谢

最佳答案

你必须有一个正在运行的运行循环,performSelector:withObject:afterDelay: 才能工作。


您的代码执行first,当first 退出时,线程就消失了。您需要运行一个运行循环。

添加:

[[NSRunLoop currentRunLoop] run];

first 的结尾。

关于iphone: performSelector: withObject: afterDelay: 不适用于后台线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613886/

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