我的iphone应用程序启动非常缓慢,我不知道为什么。我的application:didFinishLaunchingWithOptions:
并不重,我只是为我的标签栏控制器的五个视图控制器中的每一个设置了managedObjectContext。
有没有人知道是什么原因导致发射缓慢?感谢。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
mathRootViewController.managedObjectContext = self.managedObjectContext;
favoriteRootViewController.managedObjectContext = self.managedObjectContext;
chemistryRootViewController.managedObjectContext = self.managedObjectContext;
physicsRootViewController.managedObjectContext = self.managedObjectContext;
shareRootViewController.managedObjectContext = self.managedObjectContext;
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
return YES;
}
答案 0 :(得分:7)
看起来你有一个非常大的初始xib文件,它在启动时被读取和解析,以填充mathRootViewController等。
尝试等待,直到你需要控制器才能加载它们,即将它们放在一个单独的xib文件中并添加看起来有点像这样的方法
- (UIViewController *)mathRootViewController {
if (nil === mathRootViewController) {
mathViewController = [[MathViewController alloc] initWithNibName:@"MathViewController" bundle:nil];
[mathViewController setManagedObjectContext:[self managedObjectContext]];
}
return mathRootViewController;
}
每次使用控制器时,不要只使用mathRootViewController ;
,而是使用[self mathRootViewController ]
- 此模式将等到第一次需要视图控制器创建它时。
答案 1 :(得分:2)
您是否通过Xcode在iPhone上运行应用程序?当以这种方式运行时,应用往往会非常缓慢地启动尝试在iPhone上启动应用程序,而不使用Xcode。
答案 2 :(得分:2)
首先,我要确认你的假设,这确实是一个很慢的功能 - 使用探查器 - 仪器 - CPU采样器 - 查看功能显示的时序信息,并将其与其他人进行比较,因为其他东西可能会减慢速度。
一旦确认了您的假设并且需要更多细节,您可以使用“mach_absolute_time”添加非常精细的时间。最后用NSlog报告时间差异。不要做太多的日志记录,因为这也会影响性能。
答案 3 :(得分:2)
那么,你只是怀疑上面的代码是什么慢?是,您是否添加了NSLog调用以查看何时输入didFinishLaunchingWithOptions以及何时返回?只需在以上几行之间添加一些NSLog,就可以快速显示它被卡住的地方,你不觉得吗?
另外,请注意首先调用init ...函数,并在其他文件中初始化。在那里添加NSLog,以查看它们是否在didFinishLaunchingWithOptions之前被调用,以发现它们是否浪费时间。
答案 4 :(得分:0)
如果它正在进行任何类型的处理,需要一段时间产生一个新线程,并在后台线程上执行此操作。
答案 5 :(得分:0)
在没有整个managedObjectContext的情况下尝试应用程序,看看它是否启动得更快。如果是,则仅在视图打开时才设置managedObjectContext。如果开始时间保持不变,那么应该是你的nib文件。
答案 6 :(得分:0)
在应用程序缓慢目标的运行阶段启动div > a:hover {
text-decoration:none;
}
环境变量设置为DYLD_PRINT_STATISTICS
的应用程序,以打印出启动过程中缓慢的内容。打印输出看起来像:
1
Apple推荐400毫秒。