2010-06-09 54 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

加載筆尖時,運行時將實例化所有凍結在筆尖中的物體。如果您將所有視圖都放在單個筆尖中,則每個視圖都將初始化並加載,即使它不可見。否則,筆尖中的鏈接無法解析。

通常,每個筆尖應該是一個視圖/視圖 - 控制器對。多個視圖控制器可以安全地放置在同一個筆尖中,因爲它們通常是相對輕量級的對象。

相關問題