1
zhigang1992 2013-09-29 15:28:49 +08:00
应该是weak吧
|
2
monkeycz OP @zhigang1992 我现在的版本是Version 5.0 (5A1413),从 New -> Project -> OS X -> Cocoa Application 创建出来的工程,默认窗口的@property就是assign的。
|
3
xesique 2013-09-29 18:01:38 +08:00 1
OS X 下,不是所有类都支持 weak 引用的,NSWindow 正好是不支持 weak 引用的。
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW6 |
5
monkeycz OP @xesique 如果我错误的使用了weak,比如@property (weak) IBOutlet NSWindow *window;,编译器会报错么?
我自己试了一下,可以编译通过。这个是由于编译器没有提示还是OS X 10.8的SDK下没有这个约定了呢? Apple的这篇文档(https://developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html)里只是说10.7下NSWindow等类不支持weak,没有说之后的系统如何。 |
6
xesique 2013-09-29 22:37:06 +08:00
编译器不会报错,如果对象不支持 weak 引用,程序在使用该引用时会崩溃[1][2]。苹果的文章确实只提到了 10.7 系统下面的情况,我估计 10.8 下这些对象可能已经支持了 weak 引用[3]。感觉做两个系统都兼容会比较麻烦……
以上只是在网上搜集的资料,现在手边没有 Mac 无法测试,抱歉。 [1] http://stackoverflow.com/questions/9146540/which-ios-classes-that-dont-support-zeroing-weak-references [2] http://stackoverflow.com/questions/12386340/if-arc-is-handled-by-the-compiler-why-is-weak-not-supported-on-ios-4-and-mac-os [3] http://stackoverflow.com/questions/10722238/nswindow-property-set-with-the-assign-attribute-instead-of-the-strong [4] http://stackoverflow.com/questions/11840728/lion-wont-run-app-built-with-mountain-lion |