Подтвердить что ты не робот

Слабое свойство для делегата не может быть сформировано

У меня есть свойство, которое выглядит так:

@property (weak, nonatomic) id<NavigationControllerDelegate> delegate;

Но когда я запускаю свое приложение, я получаю следующую ошибку:

objc[4251]: cannot form weak reference to instance (0x101e0d4b0) of class TabBarController

Единственная причина, по которой я могу получить от Google эту ошибку, заключается в том, что вы получаете ее, когда пытаетесь сформировать слабую ссылку на объект, который переопределяет keep/release/dealloc, чего я не знаю. Мой TabBarController наследуется от NSViewController.

Кто-нибудь знает, что может вызвать это? Он работает, если я использую "назначение", но, очевидно, я предпочел бы использовать "слабый".

4b9b3361

Ответ 1

Согласно Apple Переход к заметкам о выпуске ARC,

В настоящее время вы не можете создавать слабые ссылки на экземпляры следующих классов:

NSATSTypesetter, NSColorSpace, NSFont, NSMenuView, NSParagraphStyle, NSSimpleHorizontalTypesetter и NSTextView.

Примечание. Кроме того, в OS X v10.7 вы не можете создавать слабые ссылки на экземпляры NSFontManager, NSFontPanel, NSImage, NSTableCellView, NSViewController, NSWindow и NSWindowController. Кроме того, в OS X v10.7 никакие классы в структуре AV Foundation не поддерживают слабые ссылки.

(Примечание: нужно быть очень осторожным с ненулевыми слабыми ссылками...)