gpt4 book ai didi

iphone - 定时选择器从未执行过

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

我为我的方法添加了一个观察者:

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(closeViewAfterUpdating)
name:@"labelUpdatedShouldReturn"
object:nil];

然后我的相关方法:

-(void)closeViewAfterUpdating; {
NSLog(@"Part 1 called");
[self performSelector:@selector(closeViewAfterUpdating2) withObject:nil afterDelay:2.0];
}

-(void)closeViewAfterUpdating2; {
NSLog(@"Part 2 called");
[self dismissModalViewControllerAnimated:YES];
}

我将此方法分成两部分的唯一原因是这样我可以在该方法被触发之前有一个延迟。

问题是,第二个方法从未被调用。我的 NSLog 输出显示第 1 部分调用,但它从未触发第 2 部分。有什么想法吗?

编辑:我从后台线程调用通知,这是否会产生影响?

以下是我创建后台线程的方法:

[NSThread detachNewThreadSelector:@selector(getWeather) toTarget:self withObject:nil];

getWeather中我有:

[[NSNotificationCenter defaultCenter] postNotificationName:@"updateZipLabel" object:textfield.text];

另外,调用:

[self performSelector:@selector(closeViewAfterUpdating2) withObject:nil];

确实有效。

EDITx2:我修好了。只需要在我的主线程中发布通知即可,效果很好。

最佳答案

后台线程是问题所在。它有一个未运行的运行循环,因此永远不会调用选择器。只需让线程的 NSRunLoop 或 CFRunLoopRef 对象在选择器未触发时运行即可。

关于iphone - 定时选择器从未执行过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4513845/

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