0

我在我的 didFinishLaunchingWithOptions: 方法的 XCode 中以交互方式逐步执行代码,并注意到它在此伪代码的最后一行暂停了大约 4 秒:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  ...
 create and initialize model
 ...
create UIViewController
create navController with view controller

self.window.rootViewController = navController;

其中 navController 顾名思义就是一个 UINavigationController。

为什么在使用 Xcode 单步执行时会在这一行暂停?

我在 didFinishLaunchingWithOptions: 中初始化我的模型,也许并非巧合的是,当模型在创建时要扫描大量数据对象时测试行为(它的扫描文件、读取文件和创建对象,因此可能会很慢有很多文件)。目前模型初始化是同步的,我看到确定它是否应该变为异步需要多长时间,那时我注意到了这种行为。

如果它的模型需要时间来构建,这就是为什么我在 IDE 中看到延迟,那么为什么在设置 rootViewController 而不是构建模型时会出现这种延迟?

为了澄清我的问题是:

  • 我不是在问为什么我的代码很慢

  • 我不是在问如何追踪慢代码的位置

  • 我只是因为好奇而要问的是,为什么如果我的模型初始化很慢,它会在分配给窗口的 RVC 时以交互方式单步执行调试器中的代码时表现出来。

4

1 回答 1

0

尝试Instruments追踪此类问题。

于 2013-01-07T22:38:58.060 回答