#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, есть ли способ обойти это?