Я модально представляю контроллер представления в приложении iOS. Проблема в том, что сбоя не происходит, и приложение зависает, как только вызывается presentViewController:animated. Статистика показывает, что загрузка ЦП составляет 100%, и загрузка не снижается даже после закрытия приложения вручную.
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
CustomModalViewController *vvc = [sb instantiateViewControllerWithIdentifier:@"CustomModalViewController"];
if(!vvc){
NSLog(@"ERROR!!! vvc is null");
}
NSLog(@"instantiate modal view controller");
vvc.providesPresentationContextTransitionStyle = YES;
vvc.definesPresentationContext = YES;
vvc.data = data;
NSLog(@"before presenting modal view controller");
[vvc setModalPresentationStyle:UIModalPresentationOverCurrentContext];
[self presentViewController:vvc animated:YES completion:nil];
Я попытался напечатать некоторые операторы отладки в viewDidLoad моего пользовательского класса, но они также не вызываются.
Я не понимаю, почему контроллер представления не отображается. Любая помощь будет оценена. Я хочу знать, в каком случае ваше приложение переходит в бесконечный цикл при нажатии на контроллер представления или это происходит по какой-то другой причине?
ОБНОВИТЬ:
Эта ошибка возникла после того, как я обновился до XCode 7. Не уверен, но предполагаю, что это может быть проблема с новым SDK — компилятором UIKit или LLVM. Я скопировал свой проект на другой Mac с Xcode 6.4, и ошибка исчезла!!! Я также не изменил никаких настроек сборки, которые могли бы вызвать проблему.
Любые указатели на то, как действовать?
let view=vvc.view
заставитviewDidLoad
вызываться на vvc. Если теперь он зависает на этой строке, ваша проблема в CustomModalViewController. Вероятно, в егоviewDidLoad
. Вы также можете приостановить отладчик и посмотреть, где он находится в трассировке стека. - person Rory McKinnel   schedule 23.09.2015initWithCoder
в UIViewController loadViewIfRequired. - person Ajax   schedule 23.09.2015CustomModalViewController
. Убедитесь, что вы установили этот класс только для контроллера представления, а не для его основного вида и т. д. Похоже, вы создаете его, и при его создании он создает другой и так далее. - person Rory McKinnel   schedule 23.09.2015