이는 디버그 모드(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] 행을 주석 처리하면 정지 시간이 없으며 뷰 컨트롤러가 즉시 로드됩니다.
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];
});
});
**발표자는 yourViewController / self입니다.
이 시도.
- (void)viewDidLoad{
//Set imagePicker
//-------------------------//
_imagePicker = [[UIImagePickerController alloc] init];
_imagePicker.delegate = self;
_imagePicker.videoMaximumDuration = 10.0f;
[super viewDidLoad];
제휴하지 않습니다 StackOverflow