为什么在模拟器中启动应用程序后 xcode 控制台输出缓慢?

why is xcode console output sluggish after app launch in simulator?

在昨天的一场马拉松比赛中(从早上 7 点到午夜过后),我突然 运行 遇到一个问题,在模拟器中启动应用程序后,立即点击按钮并打印到控制台并滑动views 在大约 15 秒内不会产生任何变化。最终(10 - 15 秒)控制台输出出现,视图滑动,看起来又正常了。

我在 Big Sur 11.2.3

上使用 Xcode 版本 12.5 (12E262)

我看过这些,还有无数其他的:

iPhone Simulator suddenly started running very slow

Xcode freezes on startup while loading project

我从派生数据中删除了项目的文件夹,我确认未选中“慢速动画”。我没有删除“xcuserdata”文件夹。我只是不知道去哪里调试这个问题。有人见过这种行为吗?我是否口吃并按下了组合键(按三次 Shift 和 CMD-T 都用于切换慢速动画,我已经学会了)?我觉得我已经添加了触发它的代码,但我不能确定。我花了一整天的时间重构我的项目,以减少 Objective-C 和 UIKit 代码,并更好地利用可组合架构 (TCA)。如果人们建议我可以执行的调试步骤,我会尝试并报告。我只是不知道如何继续调试这个问题。

当天更改前的备份不会出现此行为。我将项目复制到一个新目录,并用备份的源代码替换了所有源代码。这很好用。所以我可以从昨晚下午 3 点到午夜失去工作,或者忍受这个直到我有磁盘 space 来安装 12.5.1

欢迎任何见解

所以我 运行 一个计时器配置文件——请参阅这篇很棒的文章:

https://www.avanderlee.com/debugging/xcode-instruments-time-profiler/

我想到了这个:

这导致了这个:

而且我明白我在哪里引入了问题:

var selectedNibIndex: Int = 0 {
        didSet {
            brush = WDBrush.from(index: selectedNibIndex)!
            cameoImage = BrushStrokeImageView(paintBrush: brush)
            dictionary = brush.wdPropertiesDictionary() as! [String: WDProperty]
        }
    }

这是新代码,它被放置在一个不断重建的结构中。

我会把它搬走。

**

I guess the answer to my question is to run the app under the time profiler and let it tell you where the problem is.

**

而且马拉松赛并不总是一个好主意。如果我没有咬断这么大的任务,我会早点发现问题。有两个小时无法编译,我不应该让这种情况发生。经过一些更改后,当我编译它时,我已经更改了很多东西,我再也见不到森林了。

希望对大家有所帮助,感谢阅读!