iOS15 Следующий ответчик НЕ установлен на ноль, что приводит к сбою приложения

#swift #objective-c #ios15

Вопрос:

Наше приложение отлично работает в iOS14, но выходит из строя в iOS15

Следующим ответчиком для contentViewController в modalVC является modalVC. Освобождение модального происходит до contentVC как в iOS14, так и в 15, что означает, что следующий ответчик contentVC освобождается до contentVC.

 2021-09-02 09:26:56.008505-0700 AppDevelopment[75463:1003950] ----------- ModalVC dealloc
2021-09-02 09:29:02.799891-0700 AppDevelopment[75463:1003950] ----------- NewPhotoAssetVC dealloc 
 

В нашем случае повторения NewPhotoAssetViewController является contentVC для модального. В методе освобождения NewPhotoAssetViewController, если я попрошу следующий ответ в iOS14, вот что я получу:

 (lldb) po [self nextResponder]
 nil 
 

Однако на iOS15, если я попрошу следующего ответчика в том же месте, я получу:

 (lldb) po [self nextResponder]
 2021-09-02 09:27:10.952742-0700 AppDevelopment[75463:1003950] *** -[ModalViewController retain]: message sent to deallocated instance 0x7fae0d6815b0
 error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0). 
 

Процесс был возвращен в состояние до оценки выражения.
Похоже, что по какой-то причине следующий ответчик для contentVC НЕ устанавливается равным нулю в iOS15. Затем мы видим сбои, когда сообщаем об этом указателе мусора, который, возможно, превратился в любой другой объект.

Следующий ответчик доступен только для чтения, поэтому мы не можем явно установить его равным нулю. Не уверен, что это ошибка Apple, есть ли способ обойти это?