调用alloc init时,UIImagePickerController确实很慢

我有一个视图控制器,按下tabBarController中的一个选项卡。 在这个视图控制器中,我在viewDidLoad方法中初始化一个UIImagePickerController:

- (void)viewDidLoad { [super viewDidLoad]; //Set imagePicker //-------------------------// _imagePicker = [[UIImagePickerController alloc] init]; _imagePicker.delegate = self; _imagePicker.videoMaximumDuration = 10.0f; } 

目的是在稍后按下按钮时显示UIImagePickerController。 出于某种原因,虽然为此视图控制器按下选项卡图标时,此viewDidLoad方法正在运行时有3-4秒的挂起。 当我注释掉行_imagePicker = [[UIImagePickerController alloc] init]时,没有挂起时间,视图控制器立即加载 – 应该如此。

有谁知道为什么分配和初始化UIImagePickerController需要这么长时间? 如果是这样,除了将其作为后台进程运行之外,有没有办法加快速度? 看来这不是正常行为。

我使用的是iOS7,我没有调用viewWillAppear或viewDidAppear。

事实certificate,这只是在调试模式下(当iPhone连接并通过Xcode运行时)的一个问题。 一旦相同的应用程序运行而没有连接到Xcode,则不会发生延迟。

尝试这个

 //show a HUD or activityIndicator dispatch_async(dispatch_queue_create("openPhotosCamera", NULL), ^{ UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init]; dispatch_async(dispatch_get_main_queue(), ^{ //hide HUD or activityIndicator [presenter presentViewController:mediaUI animated:YES completion:nil]; }); }); 

**演示者是yourViewController / self

尝试这个。

  - (void)viewDidLoad{ //Set imagePicker //-------------------------// _imagePicker = [[UIImagePickerController alloc] init]; _imagePicker.delegate = self; _imagePicker.videoMaximumDuration = 10.0f; [super viewDidLoad];