狮子会的EXC_BAD_INSTRUCTION,而不是Mountain Lion

hpi*_*que 4 macos cocoa osx-lion osx-mountain-lion

EXC_BAD_INSTRUCTION在Lion中打开一个窗口时遇到以下异常,但该应用似乎在Mountain Lion中正常工作.可能是什么问题?

Process:         MyApp [595]
Path:            /Users/USER/Desktop/MyApp.app/Contents/MacOS/MyApp
Identifier:      com.example.MyApp
Version:         ??? (0.4)
Code Type:       X86-64 (Native)
Parent Process:  launchd [146]

Date/Time:       2012-09-25 11:09:14.498 +0200
OS Version:      Mac OS X 10.7.3 (11D50d)
Report Version:  9
Sleep/Wake UUID: BA4DA964-60E8-4DC6-B63C-99435074A41C

Interval Since Last Report:          2901634 sec
Crashes Since Last Report:           367
Per-App Interval Since Last Report:  129923 sec
Per-App Crashes Since Last Report:   8
Anonymous UUID:                      BFF6E121-730D-4729-B07F-DA8550F46E14

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000

Application Specific Information:
objc[595]: garbage collection is OFF
objc[595]: cannot form weak reference to instance (0x7fc091666650) of class MyViewController
Performing @selector(startPressed:) from sender NSButton 0x7fc09167d210

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libobjc.A.dylib                0x00007fff91496768 _objc_trap + 4
1   libobjc.A.dylib                0x00007fff914968aa _objc_fatal + 195
2   libobjc.A.dylib                0x00007fff914a24ad weak_register_no_lock + 346
3   libobjc.A.dylib                0x00007fff914a2a59 objc_storeWeak + 360
4   com.apple.CoreFoundation       0x00007fff8f29c75d -[NSObject performSelector:withObject:] + 61
5   com.apple.AppKit               0x00007fff94bb5392 -[NSNibOutletConnector establishConnection] + 405
6   com.apple.AppKit               0x00007fff94bb2a89 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 107
Run Code Online (Sandbox Code Playgroud)

hpi*_*que 7

找到了.问题是我已经声明了一个委托id属性weakNSVieWcontroller为其分配了一个.

显然,如果你想支持Lion并且安全,你绝不应该声明id属性weak.从过渡到ARC发行说明:

注意:此外,在OS X v10.7中,您无法创建对NSFontManager,NSFontPanel,NSImage,NSTableCellView,NSViewController,NSWindow和NSWindowController实例的弱引用.此外,在OS X v10.7中,AV Foundation框架中的任何类都不支持弱引用.

解决方案:assign改为使用.

@property (nonatomic, assign) IBOutlet id<MyDelegateProtocol> delegate;
Run Code Online (Sandbox Code Playgroud)