事实证明,这仅是在调试模式下(连接iPhone并通过Xcode运行)时的问题。一旦同一应用程序运行而不连接到XCode,就不会发生滞后。
致电Alloc Init时,UiimagePickerController真的很慢
-
25-08-2022 - |
题
我有一个视图控制器,该控制器在按下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。
解决方案
其他提示
尝试此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];
不隶属于 StackOverflow