gpt4 book ai didi

iphone - 自执行选择器 :withObject: afterDelay: does not call method

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:21 27 4
gpt4 key购买 nike

我正在开发一个 iPhone 应用程序,我试图在一定延迟后调用特定方法。但是该方法没有被调用。我不知道为什么它没有被调用。

这是我的代码

-(void)gettingCommentsList { //    some stuff....

[self performSelector:@selector(callGetListInBackgroundMethod) withObject:nil afterDelay:1.0]; }

-(void)callGetListInBackgroundMethod {
isFromthread =YES;


NSLog(@"callGetListInBackground");
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Add code here to do background processing
//
//

[self gettingCommentsList];
dispatch_async( dispatch_get_main_queue(), ^{
// Add code here to update the UI/send notifications based on the
// results of the background processing

[self.commentsTbl reloadData];
});
});



}

谢谢

最佳答案

一个潜在的问题是计时器不会阻止线程在计时器被触发之前退出。因此,如果运行循环(调用 -performSelector:withObject:afterDelay: 的线程)没有其他来源(工作),它可能不会继续运行一秒或更长时间,线程将在之前退出你的计时器触发(你的自定义工作被执行)。

如果您在辅助线程上安排计时器,那当然是可能的。

我怀疑这种设计的原因是因为计时器可能被配置为重复(或不重复)——很多人最终会遇到“僵尸”线程,因为那些重复计时器永远不会失效。这个问题很容易耗尽大量系统资源。

关于iphone - 自执行选择器 :withObject: afterDelay: does not call method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18482052/

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