2010-06-09 43 views
0

我的应用程序全部完成并且运行良好。所以现在我在旧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。应用程序无需在启动过程中同时加载所有视图。

有没有办法让我在启动时只能加载第一个“home”视图? (所有视图都是同一个笔尖的一部分。)

+3

你不应该在同一个nib文件中创建所有的视图。你应该为每个视图创建一个单独的viewcontroller和nib,以便更高效地管理内存(即仅在必要时使用) – iwasrobbed 2010-06-09 20:40:30

回答

4

您可以尝试将视图分解为不同的笔尖。使用一个笔尖UIViewControllerUIView似乎是推荐的方法。

如果这样做,视图将只在第一次访问时加载。

+0

会是一个真正的很多工作?就像在笔尖有30个不同的视角。 – Jeff 2010-06-09 19:54:16

+0

可能需要一些时间,是的,但我认为这将是值得的。您可以先尝试几个视图,直到您感觉适合迁移更多视图。 – pgb 2010-06-09 20:13:42

+0

我打算给它一个镜头,但我有几个问题:如何在所有不同的viewControllers中共享变量? 如何在不同的nid视图之间切换? 感谢您的帮助,非常感谢 – Jeff 2010-06-10 11:01:55

2

加载笔尖时,运行时将实例化所有冻结在笔尖中的物体。如果您将所有视图都放在单个笔尖中,则每个视图都将初始化并加载,即使它不可见。否则,笔尖中的链接无法解析。

通常,每个笔尖应该是一个视图/视图 - 控制器对。多个视图控制器可以安全地放置在同一个笔尖中,因为它们通常是相对轻量级的对象。