Слабое свойство для делегата не может быть сформировано
У меня есть свойство, которое выглядит так:
@property (weak, nonatomic) id<NavigationControllerDelegate> delegate;
Но когда я запускаю свое приложение, я получаю следующую ошибку:
objc[4251]: cannot form weak reference to instance (0x101e0d4b0) of class TabBarController
Единственная причина, по которой я могу получить от Google эту ошибку, заключается в том, что вы получаете ее, когда пытаетесь сформировать слабую ссылку на объект, который переопределяет keep/release/dealloc, чего я не знаю. Мой TabBarController наследуется от NSViewController.
Кто-нибудь знает, что может вызвать это? Он работает, если я использую "назначение", но, очевидно, я предпочел бы использовать "слабый".
Ответы
Ответ 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 не поддерживают слабые ссылки.
(Примечание: нужно быть очень осторожным с ненулевыми слабыми ссылками...)