Ios UIImagePickerController在调用alloc init时速度非常慢

Ios UIImagePickerController在调用alloc init时速度非常慢,ios,objective-c,performance,uiimagepickercontroller,Ios,Objective C,Performance,Uiimagepickercontroller,我有一个视图控制器,在按下tabBarController中的一个选项卡时显示。在此视图控制器中,我在viewDidLoad方法中初始化UIImagePickerController: - (void)viewDidLoad { [super viewDidLoad]; //Set imagePicker //-------------------------// _imagePicker = [[UIImagePickerController alloc] i

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

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Set imagePicker
    //-------------------------//
    _imagePicker = [[UIImagePickerController alloc] init];
    _imagePicker.delegate = self;
    _imagePicker.videoMaximumDuration = 10.0f;
}
目的是在稍后按下按钮时显示UIImagePickerController。但由于某些原因,当按下此视图控制器的tab图标时,此viewDidLoad方法运行时会出现3-4秒的挂起。当我注释掉行[u imagePicker=[[UIImagePickerController alloc]init]时,没有挂起时间,视图控制器会立即加载—这是应该的

有人知道为什么分配和初始化UIImagePickerController要花这么长时间吗?如果是这样的话,除了作为后台进程运行,还有没有其他方法可以加快它的速度?这似乎不是正常的行为

我正在使用iOS7,我没有调用viewwillbeen或viewdidebeen。

试试这个

    - (void)viewDidLoad{

    //Set imagePicker
    //-------------------------//
    _imagePicker = [[UIImagePickerController alloc] init];
    _imagePicker.delegate = self;
    _imagePicker.videoMaximumDuration = 10.0f;

[super viewDidLoad];

事实证明,这只是在调试模式下(当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];
    });
});

**演示者是您的ViewController/self

您尝试过不同的设备吗?是的,尝试过不同的设备-所有设备都存在相同的问题这对延迟时间没有影响尝试此
UIImagePickerController*imagepicker;-(void)viewDidDisplay:(BOOL)动画{[super viewDidDisplay:animated];//显示摄像头…如果(!imagepicker){imagepicker=[[UIImagePickerController alloc]init];imagepicker.sourceType=UIImagePickerController资源类型摄像头;}
当弹出popover加载UIImagePickerController时,不管XCode的调试模式如何,它都太慢了。这不应该是公认的答案。当您重新访问后续视图并调用它时,UIImagePickerController的滞后时间会持续增长。最终应用程序将崩溃。尤其是当您有多个视图调用UIImagePickerController时。无法在后台线程上调用iOS 13:[UIImagePickerController alloc]。