我在我的 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 时以交互方式单步执行调试器中的代码时表现出来。