Macos NSWindow属性集具有assign属性而不是strong属性
我注意到Mac应用程序模板创建了以下内容: @接口AppDelegate:NSObject @属性(分配)窗口*窗口Macos NSWindow属性集具有assign属性而不是strong属性,macos,Macos,我注意到Mac应用程序模板创建了以下内容: @接口AppDelegate:NSObject @属性(分配)窗口*窗口 根据ARC指南,所有顶级对象都应该使用强属性,但这是使用赋值属性。有人能解释一下原因吗?一个窗口通常由文件的所有者“拥有”,通常是您的应用程序实例(对于主nib)或NSWindowController的实例,不一定是应用程序委托或窗口委托。这就是为什么在委托类中引用是强引用是不合适的 在Mac OS/X 10.7中,NSWindow(以及其他几个Cocoa类)不支持通过ARC进行
根据ARC指南,所有顶级对象都应该使用强属性,但这是使用赋值属性。有人能解释一下原因吗?一个窗口通常由
文件的所有者“拥有”
,通常是您的应用程序实例(对于主nib)或NSWindowController的实例,不一定是应用程序委托或窗口委托。这就是为什么在委托类中引用是强引用是不合适的
在Mac OS/X 10.7中,NSWindow
(以及其他几个Cocoa类)不支持通过ARC进行管理,因此NSWindow
的声明属性必须是assign
,而不是strong
或弱
。有关更详细的讨论,请参阅和文档。基本答案是,对于覆盖release
和retain
方法的对象,不能使用弧管理引用
在10.8中,NSWindow似乎不在该列表中,但Xcode仍在生成assign
属性,而不是weak
我猜这是模板中的一个缺陷。这不是第一次!不要仅仅因为代码在Apple模板中就信任它。因此,在10.8上将其更改为弱
,应该是安全的。如果Apple tech文档(请参见上面的转换为ARC)是准确的,则可以将其更改为弱。