Мы можем смело предположить, что _checkForTerminateAfterLastWindowClosed
вызывается для проверки того, должно ли приложение завершиться после закрытия последнего окна. Далее мы можем предположить, что он делает это, запрашивая у вашего приложения делегата .
Я только что заметил в ваш предыдущий вопрос , что ваше окно является делегатом вашего приложения. Я предполагаю, что по:
EXC_BAD_ACCESS
происходит, когда я закрываю приложение.
Вы имели в виду, что это происходит, когда вы закрываете окно . (Приложение не может быть закрыто; этот глагол не совпадает с этим существительным. Вы закрываете окна и закрываете или закрываете приложения.)
Когда вы закрываете окно (при условии, что это было единственное окно, которое у вас было), приложение отправляет запрос своему делегату, должно ли оно выйти из этого. К сожалению, объект, который вы указали в качестве его делегата, является окном, которое вы только что закрыли и тем самым убили.
Итак, это мертвый объект, о котором сообщается (приборы подтвердят это): Ваше окно, которое также является делегатом вашего приложения.
Лучшее решение - разделить объект на два (или три): создать прямой подкласс NSObject и экземпляр этого в качестве делегата вашего приложения, а также создать и владеть контроллером окна, который загружает окно .