代表的弱属性无法形成

时间:2012-02-08 12:38:25

标签: objective-c ios macos cocoa automatic-ref-counting

我有一个看起来像这样的属性:

@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”。

1 个答案:

答案 0 :(得分:36)

根据Apple的Transitioning to ARC Release Notes

  

您当前无法创建对以下类的实例的弱引用:

     

NSATSTypesetterNSColorSpaceNSFontNSMenuViewNSParagraphStyleNSSimpleHorizontalTypesetterNSTextView

     

注意:此外,在OS X v10.7中,您无法创建对NSFontManagerNSFontPanelNSImageNSTableCellView实例的弱引用NSViewController NSWindowNSWindowController。此外,在OS X v10.7中,AV Foundation框架中的任何类都不支持弱引用。

(注意:非零弱引用需要非常小心......)