gpt4 book ai didi

iphone - NSRunloops 和强制事件处理

转载 作者:行者123 更新时间:2023-12-03 20:50:23 24 4
gpt4 key购买 nike

我的 iPhone 应用程序中有几个选项卡,需要几秒钟的时间才能加载(从本地 sqlite 数据库中提取大量数据)。当用户触摸选项卡时,应用程序似乎什么也没做。我试图放置一个显示旋转器的窗口,但是由于处理立即进行,因此它从未显示。

我知道我有几个不同的选项来异步加载数据,但是我想对社区进行民意调查,看看强制 NSRunloop 的另一个周期显示窗口是否存在任何潜在问题。

这是我的代码的样子...

[[ActivityIndicator sharedActivityIndicator] show];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];

按照 1 到 10 的评分标准,您认为这次黑客攻击有多严重?

最佳答案

我不知道如何评价它,但我知道我不想那样做。搞乱系统默认的运行循环似乎是个坏主意。

我认为有一些不错的方法。最简单的是将附加处理放在单独的私有(private)方法中,然后执行以下操作:

[[ActivityIndicator sharedActivityIndicator] show];
[self performSelector:@selector(processingMethod) withObject:nil afterDelay:0];

这将导致在运行循环结束时、指示器显示后调用processingMethod。应该可以正常工作。

需要注意的是,如果您的指示器是动画的,则根据其设置方式,在处理方法运行时它可能不会动画。在这种情况下,您需要在后台线程中运行processingMethod,这可能会稍微复杂一些,或者可能就像这样做一样简单:

[self performSelectorInBackground:@selector(processingMethod) withObject:nil];

潜在的复杂性是,在processingMethod结束时,当您要显示处理结果时,您可能必须将方法回调到主线程。

关于iphone - NSRunloops 和强制事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/723608/

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