EXC_BAD_INSTRUCTION by Leo, but not in Mountain Leo

I get an EXC_BAD_INSTRUCTION exception when opening a window in Lion, but the application seems to work fine in Mountain Lion. What could be the problem?

 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 
+4
source share
1 answer

Found. The problem was that I declared the id delegate property with weak and assigned it an NSVieWcontroller .

Apparently, if you want to maintain Lion and be safe, you should never declare id properties as weak . From going to ARC Release Notes :

Note. Also, in OS X v10.7, you cannot create weak references to instances of NSFontManager, NSFontPanel, NSImage, NSTableCellView, NSViewController, NSWindow, and NSWindowController. Also, in OS X v10.7, no classes in Foundation Foundation support support references.

Solution: use assign instead.

 @property (nonatomic, assign) IBOutlet id<MyDelegateProtocol> delegate; 
+7
source

Source: https://habr.com/ru/post/1436115/


All Articles