2012-02-08 4 views
18

У меня есть свойство, которое выглядит следующим образом:слабого свойство делегата не может быть сформировано

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

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

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

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

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

+0

CocoaFu, "не может сформировать слабую ссылку на экземпляр ..." является всегда ошибка времени выполнения. –

ответ

36

По словам Apple, Transitioning to ARC Release Notes,

You cannot currently create weak references to instances of the following classes:

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

Note: In addition, in OS X v10.7, you cannot create weak references to instances of NSFontManager , NSFontPanel , NSImage , NSTableCellView , NSViewController, NSWindow , and NSWindowController . In addition, in OS X v10.7 no classes in the AV Foundation framework support weak references.

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

+0

Отличный материал! Я подозревал, что с NSViewController было что-то другое, основанное на моих выводах. Я не видел, что ты только что вставил. Спасибо, это определенно проясняет все! –

Смежные вопросы