Xcode 4.4.1在Snow Leopard上构建崩溃

时间:2012-08-31 06:24:20

标签: xcode4

我有一个项目,我在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上工作,但我需要进行大量的回归和泄漏测试以确认。


更新评论2012-09-18

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

0 个答案:

没有答案