我有一个项目,我在OS X 10.7.4下使用Xcode 4.4.1编译
我正在使用Base SDK SDKROOT macosx10.7 我已设置部署目标MACOSX_DEPLOYMENT_TARGET 10.6
我测试了最近在Snow Leopard上的构建并且它崩溃了。 使用Xcode 4.2和4.3的先前版本确实有效,我可以使用Xcode版本3.2.6在Snow Leopard上编译
有没有其他人有这种经历,或者更好地知道我能做些什么来解决它?
OS Version: Mac OS X 10.6.8 (10K549)
Report Version: 6
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000030
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
objc[274]: garbage collection is ON
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 com.apple.AppKit -[NSImage _allocAuxiliaryStorage] + 158
1 com.apple.AppKit -[NSImage copyWithZone:] + 66
2 libobjc.A.dylib objc_setProperty + 82
3 -[TreeViewController(Dirs) outlineView:willDisplayCell:forTableColumn:item:] + 207
PS刚从TimeMachine备份中恢复Xcode 4.2.1,并且构建适用于Snow Leopard
我“升级”为Mountain Lion - 这不允许Xcode 4.2.1运行。 (这似乎也删除了OSX 10.8和Xcode 4.4 SDK以及命令行工具:-()。 这使得不可能只使用珍贵的编译器。
我试图跟进崩溃发生的地方,这似乎是在我的一个类中定义的setNodeIcon调用
@property (copy) NSImage *nodeIcon;
我意识到我最终将不得不转换为ARC,但却还不愿意这样做。 转换远非直截了当,我不确定我理解我需要做出的所有更改(一次一个文件),特别是免费桥接更改。
生成的ARC代码确实在10.6 - 10.8上工作,但我需要进行大量的回归和泄漏测试以确认。
ARC代码有效但我发现了一些问题(我已经解决了)但需要做更多的事情。
我回到了我的GC代码并将copy
更改为assign
。这似乎有效。
@property (assign) NSImage *nodeIcon;
只是为了确认我制作了一个独立的应用程序(见下文),除了复制NSImage之外什么都不做。 这以同样的方式崩溃,因此它似乎是编译器中的一个错误。
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSImage *nodeIcon;
}
@property (assign) IBOutlet NSWindow *window;
@property (copy) NSImage *nodeIcon;
@end
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize nodeIcon;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSString *defaultDirectory = NSHomeDirectory();
[self setNodeIcon:[[NSWorkspace sharedWorkspace] iconForFile:defaultDirectory]];
}
@end