當我的應用程序啓動時,我想初始化一個UIImagePickerController
。由於這可能需要幾秒鐘,我想在後臺執行。在調用選取器之前,確保後臺任務完成的最佳方法是什麼?在後臺加載UIImagePickerController
目前我有以下代碼。它可以工作,但如果在後臺任務完成之前調用選取器,它會崩潰。
- (void) viewDidAppear: (BOOL)animated {
[super viewDidAppear: animated];
[self performSelectorInBackground:@selector(initPicker) withObject:nil];
....
}
和
- (void) initPicker {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"picker start... ");
[self setPicker: [[UIImagePickerController alloc] init]];
NSLog(@"picker done.");
[pool release];
}
謝謝!
編輯:這變成我們這個問題有點理論。在設備上,計算[[UIImagePickerController alloc] init]
僅需要調試模式的時間。所以對於生產代碼,不需要在後臺運行任何東西。另外,[[UIImagePickerController alloc] init]
似乎鎖定主線程,所以即使在調試模式下,將其放置在後臺線程上也沒有優勢。
謝謝您的回覆。我認爲這不會起作用。首先,UI調用只能在主線程上完成。其次,目標不是在加載ImagePicker後立即呈現。只有在用戶點擊一個按鈕後。 – user467225 2011-04-02 06:52:07