Xcode Time Profiler 的详细信息面板显示 "main" 是应用运行缓慢的原因,但没有在其中显示单独的方法调用。

Xcode Time Profiler's detail panel shows that "main" is the reason for app's sluggishness, without showing separate method calls inside it.

我创建了一个演示应用程序,该应用程序将多个滤镜应用于图像(它在项目内部)并在 UIScrollView 中显示按钮,并将该图像设置为背景图像。因此,所有逻辑都发生在直接从 viewDidLoad 调用的方法中。我没有使用任何线程机制,所以所有的工作都发生在主线程上。 我正在使用 Instruments,特别是 Time Profiler 来找出应用程序启动如此缓慢的原因(很明显,但我希望在 Time Profiler 中看到它)。

当我 运行 它时,我在详细信息面板(在根目录中)中得到以下结果:

当我按箭头查看实际代码时,我得到以下信息:

这是针对每个过滤操作的。

面板不应该显示我在其中进行过滤的实际方法吗?

main 函数不是导致您的应用运行缓慢的原因。在您的屏幕截图中,main 的列表显示您在 main.

中花费了 0 秒

Time Profiler 仪器每秒记录调用堆栈 1000 次。 main 函数是您应用程序的起点。这意味着 main 将在您的应用处于 运行 的大部分时间都在调用堆栈中,即使您的应用大部分时间不在 main 中。 main 函数在调用堆栈上是屏幕截图中出现 649 毫秒和 95.5% 列表的原因。

不用担心 main 函数的列表。您无法控制 main.

如果您想在调用树中找到您的函数,select 反转调用树和隐藏系统库复选框。选中这些复选框可以更轻松地在调用树中找到您的代码。