Сбой после закрытия UIViewController

Вскоре у меня возникла проблема с моим приложением, которое, как только я закрываю определенный UIViewController, завершает работу приложения с Tread 1: точка останова 1.1 7.1.

Я сузил проблему до "Контейнерного представления", которое помещено в представление, которое отклонено. Я заметил, что сначала освобождается главный контроллер и контроллер представления контейнера, но не вижу, в чем проблема. Я не уверен, когда эта проблема появилась, поскольку я несколько дней работал над конкретными проблемами интерфейса и никогда не использовал опцию "перейти назад".

Я знаю, что приведенное выше описание очень расплывчато, но любые предложения о том, как отладить возможную причину, будут очень приветствоваться, поскольку я потратил на это часы на этом этапе.

#0  0x00000001954440a8 in objc_exception_throw ()
#1  0x0000000184d05d88 in +[NSException raise:format:] ()
#2  0x0000000185b59f00 in NSKVODeallocate ()
#3  0x0000000184be5378 in CFRelease ()
#4  0x0000000184bf1938 in -[__NSArrayM dealloc] ()
#5  0x000000019545d724 in (anonymous namespace)::AutoreleasePoolPage::pop(void*) ()
#6  0x0000000184be8f94 in _CFAutoreleasePoolPop ()
#7  0x0000000184cbb750 in __CFRunLoopRun ()
#8  0x0000000184be91f4 in CFRunLoopRunSpecific ()
#9  0x000000018dd775a4 in GSEventRunModal ()
#10 0x000000018951a784 in UIApplicationMain ()
#11 0x00000001000cdc04 in main at /Users/Luuk/Documents/Xcode development/idoms-portal/iDoms/main.m:14
#12 0x0000000195ab2a08 in start ()

РЕДАКТИРОВАТЬ: я сузил его до связывания контейнера с контроллером представления:

@interface DOPrototypeViewController : UIViewController <DOContentSizeCallback> {

    @protected
    DOMediaPlayerHelper* _mediaPlayerHelper;
    __weak NSString* _viewTitle;

    IBOutlet UIBarButtonItem *_previousPageBttn;
    IBOutlet UIBarButtonItem *_nextPageBttn;

    __weak IBOutlet UIView* _contentContainer;
    __weak IBOutlet UIScrollView* _scrollView;
}

@property (nonatomic, weak)  NSString* viewTitle;;

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentViewHeightConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentViewWidthConstraint;

Как только контейнер в IB связан, проблема возникает. Как упомянуто выше, кажется, что DOPrototypeViewController выгружается в первую очередь, до контроллера contentContainer. Это должно быть как-то связано со ссылкой на родительское представление contentContainer, которое я чувствую.

2 ответа

Это была ссылка. Я добавил наблюдателя [[self view] addObserver:self forKeyPath:@"frame" options:0 context:nil]; в двух контроллерах, и пока я исправил один, ни разу не увидел второй и не убрал его.

У меня были подобные сбои раньше. Обычно сообщение отправляется объекту, который A: больше не существует. B: не распознает селектор.

Начните с просмотра трассировки стека. Посмотрите, какие последние пару звонков были прямо перед аварией. Обычно это указывает на правильное направление.

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

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