我有一个视图控制器,该控制器在按下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] init]没有悬挂时间,视图控制器立即加载 - 如它所应。

有谁知道为什么分配和初始化uiimagePickerController花了这么长时间?如果是这样,除了将其作为背景过程运行外,是否有一种方法可以加快它的速度?似乎这不是正常行为。

我正在使用ios7,并且没有调用ViewWillAppear或ViewDidappear。

有帮助吗?

解决方案

事实证明,这仅是在调试模式下(连接iPhone并通过Xcode运行)时的问题。一旦同一应用程序运行而不连接到XCode,就不会发生滞后。

其他提示

尝试此iOS 12

//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

尝试这个。

    - (void)viewDidLoad{

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

[super viewDidLoad];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top