문제

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를 호출하지 않습니다.

도움이 되었습니까?

해결책

이는 디버그 모드(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];
    });
});

**발표자는 yourViewController / self입니다.

이 시도.

    - (void)viewDidLoad{

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

[super viewDidLoad];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top