#objective-c #macos #cocoa #nswindowcontroller
#objective-c #macos #какао #nswindowcontroller
Вопрос:
У меня есть NSWindowController
подкласс, и в windowWillClose:
уведомлении я отправляю авторелиз оконному контроллеру. Но все равно dealloc никогда не вызывается. У меня нет таймеров в классе, так что это не проблема. Есть идеи?
Комментарии:
1. Что произойдет, если вы вызовете
release
вместо этого?2. то же самое.
dealloc
по-прежнему никогда не вызывается.3. Я думаю, просто просмотрите свой код и убедитесь, что вы не сохраняете другую ссылку на него где-нибудь :-/
4. Я почти уверен, что это не так. Единственные места в классе, где я перехожу
self
к чему-либо, — это при использованииNSThread
для выполнения селектора в фоновом режиме. Может ли это иметь какое-то отношение к этому?5. @edc1591: GC не использует сохранение или освобождение и не вызывает
dealloc
. См. Руководство по программированию GC: developer.apple.com/library/mac/documentation/Cocoa/Conceptual/… Для GC используйте инструмент Object Graph, чтобы увидеть, что (если что-либо) поддерживает NSWindowController в рабочем состоянии.
Ответ №1:
Проблема заключалась в том, что я использовал сборку мусора. Я думаю, вам не следует использовать вещи, когда вы не на 100% уверены в том, как они работают.