我有一个看起来像这样的属性:
@property (weak, nonatomic) id<NavigationControllerDelegate> delegate;
但是当我运行我的应用程序时,我收到以下错误:
objc[4251]: cannot form weak reference to instance (0x101e0d4b0) of class TabBarController
我可以从谷歌获取此错误的唯一原因是,当您尝试形成对覆盖retain / release / dealloc的对象的弱引用时,您会得到它,我不是。我的TabBarController继承自NSViewController。
任何人都知道这会导致什么?如果我使用“assign”,它会起作用,但显然我更喜欢使用“weak”。
答案 0 :(得分:36)
根据Apple的Transitioning to ARC Release Notes,
您当前无法创建对以下类的实例的弱引用:
NSATSTypesetter
,NSColorSpace
,NSFont
,NSMenuView
,NSParagraphStyle
,NSSimpleHorizontalTypesetter
和NSTextView
。注意:此外,在OS X v10.7中,您无法创建对
NSFontManager
,NSFontPanel
,NSImage
,NSTableCellView
,实例的弱引用NSViewController
,NSWindow
和NSWindowController
。此外,在OS X v10.7中,AV Foundation框架中的任何类都不支持弱引用。
(注意:非零弱引用需要非常小心......)