Программа Какао выходит без сбоев - PullRequest
3 голосов
/ 02 июля 2011

Мне удалось создать ошибку при выходе из программы какао.

- [NSApplication прекращается:], по-видимому, не вызывается.

Также нет - [NSException init].

Сбой не происходит.В gdb я вижу, что exit () вызывается напрямую из NSApplicationMain без прохождения обычного пути [завершение NSApplication].

Любые идеи о том, как отладить это и / или как это (на первый взгляд) невозможно"поведение" может произойти?

Заранее спасибо какао-новичку.

Ответы [ 4 ]

4 голосов
/ 02 июля 2011

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

2 голосов
/ 02 июля 2011

Есть несколько оставшихся маршрутов, которые заставили бы ваше приложение добровольно выйти без прохождения обычного пути [NSApplication terminate].

Попробуйте установить точку останова на «stop:». Я подозреваю, что как-то неуместно названный вызов executeSelector? Или плохо названное соединение IB, вы вызываете этот метод, который задокументирован для выхода из основного цикла событий.

0 голосов
/ 05 июля 2011

PS - я изменил свой код, чтобы использовать [NSApplication runModalForWindow:] вместо модальных вызовов сеанса, и все хорошо (я думаю). (Использование модального сеанса позволило бы мне запускать веб-браузер из модального диалога - в то время как runModalForWindow - нет, но в этом случае мне не нужны эти функции.)

0 голосов
/ 05 июля 2011

После обдумывания этого я догадался, что я делаю что-то не так "в целом".Итак, «в общих чертах» я вызывал модальный диалог (загружая кончик окна, показывая окно, а затем используя [NSApplication beginModalSessionForWindow] ... [NSApp runModalSession] ... и после закрытия [NSAppendModalSession]. Это не помогло мне в других кусках кода. Критическая разница состояла в том, что это модальное окно загружалось и запускалось из awakeFromNib другого класса.

Я написалпростое приложение, которое будет воспроизводить это поведение. Итак, что происходит, так это то, что модальное диалоговое окно загружается счастливо, и когда вы закрываете модальное окно, оно не только закрывается, но и выходит из приложения. Я представляю, что это поведение «как задумано».читая в apple docs , чтобы увидеть, могу ли я понять, почему это так, но я запутался в этом. Я предполагаю, что каким-то образом модальный цикл событий моего диалога перехватил цикл событий приложения, так что, когда диалог заканчиваетсятак же и приложение.

Если кто-то лучше понимает эту ошибку, пожалуйста,не стесняйтесь просветить нас ...

Спасибо всем за чтение и предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...