NSWindowController никогда не освобождается

#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% уверены в том, как они работают.