我的应用已经完成并且运行良好。所以现在我在旧的iPhone上运行它,该应用程序需要17.3秒才能启动!?!?我花了很多时间研究它,我发现加载这么长时间的原因是我有很多视图,每个视图都有一个png背景图像。我在IB和我的代码中提出的所有观点:
#import "MyTestAppDelegate.h"
#import "MyTestViewController.h"
@implementation MyTestAppDelegate
@synthesize window;
@synthesize viewController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
}
@end
在代码的末尾说:
[window addSubview:viewController.view];
该应用似乎同时加载了笔尖中的所有视图。所有观点中的所有png都约为12mb。应用程序无需在启动期间同时加载所有视图。
有没有办法只能在启动时加载第一个“主页”视图? (所有视图都是同一个笔尖的一部分。)
答案 0 :(得分:4)
您可以尝试将视图拆分为不同的笔尖。对于单个UIViewController
和UIView
使用一个笔尖似乎是推荐的方式。
如果这样做,视图将仅在首次访问时加载。
答案 1 :(得分:2)
加载nib时,运行时会实例化在nib中冻结的所有对象。如果您在一个笔尖中拥有所有视图,那么每个视图都会初始化并加载,即使它不可见。否则,无法解析笔尖中的链接。
通常,每个笔尖应该是视图/视图控制器对。多个视图控制器可以安全地放在同一个笔尖中,因为它们通常是相对轻量级的对象。