Сбой приложения на ios11 и Xcode 9: при добавлении [self addChildViewController:]

При добавлении дочернего контроллера просмотра я получаю следующий сбой, Здесь NavigationViewController расширен от UIViewController.

Эта ошибка возникает, когда я перехожу с upgraded в Xcode 9, успешно работая с более ранними версиями Xcode.

Я сослался на Ссылка на сайт, но не получил удовлетворительного ответа, пожалуйста, помогите мне в этом,

Спасибо заранее. :)

Блок кода:

 _mainSectionsController = [[[MainSectionsController alloc] initWithNibName:nil bundle:nil] autorelease];
[self addChildViewController:_mainSectionsController];   

**Init method of _mainSectionsController** .

 -(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
 {
  self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  if (!self) return nil;
  self.edgesForExtendedLayout = UIRectEdgeAll;
  self.viewControllers = @
  [
   [[[NavigationViewController alloc] initWithNibName:nil bundle:nil]
    autorelease]
  ];
  return self;
 } 

**init method of NavigationViewController**

 -(id)initWithNibName:(NSString*)nibNameOrNil bundle: (NSBundle*)nibBundleOrNil
    {
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
     if (!self) return nil;
     self.edgesForExtendedLayout = UIRectEdgeAll;

    _navController = [[[UINavigationController alloc] initWithNibName:nil bundle:nil] autorelease];
    _navController.get().delegate = self;
    _navController.get().navigationBarHidden = YES;
    _navController.get().view.clipsToBounds = YES;
    _navController.get().view.backgroundColor = [UIColor clearColor]; 
    return self;
 }

2018-05-22 10:46:23.112290+0530 [912:19925] -[NavigationViewController _viewControllerSubtreeDidGainViewController:]: unrecognized selector sent to instance 0x7f91ba83c000 2018-05-22 10:46:24.939903+0530 [912:19925] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NavigationViewController _viewControllerSubtreeDidGainViewController:]: unrecognized selector sent to instance 0x7f91ba83c000' * First throw call stack:
( 0 CoreFoundation 0x000000010f03f12b exceptionPreprocess + 171 . 1 libobjc.A.dylib 0x000000010e640f41 objc_exception_throw + 48 2 CoreFoundation 0x000000010f0c0024 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 3 UIKit 0x000000010b2cdf51 -[UIResponder doesNotRecognizeSelector:] + 295 4 CoreFoundation 0x000000010efc1f78 ___forwarding_ + 1432 5 CoreFoundation 0x000000010efc1958 _CF_forwarding_prep_0 + 120 6 UIKit 0x000000010b246c1d -[UIViewController _addChildViewController:performHierarchyCheck:notifyWillMove:] + 696 7 UIKit 0x000000010b26930e -[UIViewController(UIContainerViewControllerProtectedMethods) addChildViewController:] + 83 8 0x00000001058eeac3 -[MainViewController initWithNibName:bundle:] + 5235 9 0x00000001059876ca -[AppDelegate loadMainViewController] + 122 10 0x0000000105984561 -[AppDelegate application:didFinishLaunchingWithOptions:] + 1137 11 UIKit 0x000000010b091bca -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 299 12 UIKit 0x000000010b093648 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4113 13 UIKit 0x000000010b098aeb -[UIApplication _runWithMainScene:transitionContext:completion:] + 1720 14 UIKit 0x000000010b4626f8 111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 924 15 UIKit 0x000000010b8384c8 +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153 16 UIKit 0x000000010b4622f1 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 249 17 UIKit 0x000000010b462b6b -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 696 18 UIKit 0x000000010bde0a69 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 262 19 UIKit 0x000000010bde0922 -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 444 20 UIKit 0x000000010babd9c8 __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 221 21 UIKit 0x000000010bcbcb06 _performActionsWithDelayForTransitionContext + 100 22 UIKit 0x000000010babd88b -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 231 23 UIKit 0x000000010b837b25 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 392 24 UIKit 0x000000010b09736a -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 523 25 UIKit 0x000000010b672605 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 369 26 FrontBoardServices 0x0000000116cb8cc0 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 338 27 FrontBoardServices 0x0000000116cc17b5 __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 235 28 libdispatch.dylib 0x000000010f87b33d _dispatch_client_callout + 8 29 libdispatch.dylib 0x000000010f8809f3 _dispatch_block_invoke_direct + 592 30 FrontBoardServices 0x0000000116ced498 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK + 24 31 FrontBoardServices 0x0000000116ced14e -[FBSSerialQueue _performNext] + 464 32 FrontBoardServices 0x0000000116ced6bd -[FBSSerialQueue _performNextFromRunLoopSource] + 45 33 CoreFoundation 0x000000010efe2101 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 34 CoreFoundation 0x000000010f081f71 __CFRunLoopDoSource0 + 81 35 CoreFoundation 0x000000010efc6a19 __CFRunLoopDoSources0 + 185 36 CoreFoundation 0x000000010efc5fff __CFRunLoopRun + 1279 37 CoreFoundation 0x000000010efc5889 CFRunLoopRunSpecific + 409 38 GraphicsServices 0x000000010fed99c6 GSEventRunModal + 62 39 UIKit 0x000000010b09a5d6 UIApplicationMain + 159 40 0x000000010590c331 main + 65 41 libdyld.dylib 0x000000010f8f7d81 start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException

Не могли бы вы добавить полную трассировку стека, и если она печатает имена файлов и номера строк - также будет полезен исходный код вокруг этих номеров строк.

battlmonstr 21.05.2018 14:12

@battlmonstr Пожалуйста, проверьте мой отредактированный вопрос.

umj 22.05.2018 09:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
277
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку у вас есть autorelease в вашем коде MainSectionsController, я предполагаю, что вы не используете там ARC. Я настоятельно рекомендую обновить код MainSectionsController и NavigationViewController до ARC. Это предотвращает случайные выбросы, которые могут вызвать подобные проблемы.

Кроме того, я бы рекомендовал переместить назначение self.viewControllers из конструктора в viewDidLoad, если это возможно.

Большой!! Большое вам спасибо :) Проблема решена, когда я переместил назначение self.viewControllers из конструктора в viewDidLoad.

umj 22.05.2018 13:31

Другие вопросы по теме