代表的弱属性无法形成

Ken*_*rin 19 macos cocoa objective-c ios automatic-ref-counting

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

@property (weak, nonatomic) id<NavigationControllerDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的应用程序时,我收到以下错误:

objc[4251]: cannot form weak reference to instance (0x101e0d4b0) of class TabBarController
Run Code Online (Sandbox Code Playgroud)

我可以从谷歌获取此错误的唯一原因是,当您尝试形成对覆盖retain/release/dealloc的对象的弱引用时,您会得到它,我不是.我的TabBarController继承自NSViewController.

有谁知道这会导致什么?如果我使用"assign",它会起作用,但显然我更喜欢使用"weak".

Gar*_*han 37

根据Apple的Transitioning to 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框架中的任何类都不支持弱引用.

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