|
1
0
您正在阻塞主线程,并在5秒内阻止任何更新或交互。屏幕不会刷新,在生产过程中,您的应用程序会被看门狗终止。 试试这样的方法:
要解释一下,有多种方法可以剥这只猫的皮。但总的来说,永远不要用任何东西阻塞主线程。要么你有昂贵的操作,要么你正在等待你应该在另一个线程上做的事情。 既然你只是在打发时间,就没有理由使用另一个线程。您可以使用计时器或调度队列。计时器如下所示:
但如果你想使用另一个线程,那就意味着切换到另一个螺纹,等待5秒(你可以使用睡眠),然后切换回主螺纹来停止动画。这样做很不合适。 我希望这能让你对这个话题有更多的了解。 编辑: From comment将等待时间替换为使用CoreData执行一些持久操作。 核心数据有上下文。每个上下文表示数据库的内存状态,该状态是延迟加载的。 要完成繁重的工作,您需要创建一个新的背景上下文,让它执行您的所有逻辑,保存到数据库并报告完成。
这可以与您的逻辑一起使用,如下所示:
重要的是要看到,有意地说,一个上下文已经有了
|
|
|
2
0
再次感谢Matic Oblak和Hangar Fox。在我的代码中,我现在使用DispatchQueue,而不是直接调用“rescoreAllDecks”:
我还创建了一个单独的函数来停止微调器:
这似乎解决了问题。马特,我会记下你最后的回复,以备将来参考。谢谢大家。 |
|
|
Danil · 种子/填充核心数据的最佳实践?[关闭] 1 年前 |
|
|
Robin · LazyVGrid项目预计不会击中测试区域 1 年前 |
|
|
Alex Smith · 移动到下一个视图控制器后如何显示警报? 1 年前 |
|
selcukctn · 如何在react native中制作无限动画? 1 年前 |
|
|
Nicolas Gimelli · iOS 18远程通信通知不起作用 1 年前 |