我有时在 [NSWorkspace setIcon:forFile:options:] API 上面临崩溃。
任何帮助表示赞赏。这是崩溃堆栈,
0 libsystem_kernel.dylib 0x00007fff85bfbe56 __semwait_signal_nocancel + 10
1 libsystem_c.dylib 0x00007fff8c04818b nanosleep$NOCANCEL + 139
2 libsystem_c.dylib 0x00007fff8bfe7c78 usleep$NOCANCEL + 53
3 libsystem_c.dylib 0x00007fff8bfe7aa6 abort + 187
4 libsystem_c.dylib 0x00007fff8c04684c free + 389
5 com.apple.CoreServices.CarbonCore 0x00007fff8df7aaf7 CSMemDisposePtr + 23
6 com.apple.CoreServices.CarbonCore 0x00007fff8df7aaba CSMemDisposeHandle + 79
7 com.apple.CoreServices.CarbonCore 0x00007fff8df7c355 DisposeHandle + 9
8 com.apple.AppKit 0x00007fff90356598 -[NSWorkspace setIcon:forFile:options:] + 566
这是代码,
static NSImage *FolderIcon = nil;
if(!FolderIcon) {
FolderIcon = [[NSImage imageNamed:@"xxx.icns"] retain];
}
if(![[NSWorkspace sharedWorkspace] setIcon: FolderIcon
forFile:Path
options:0]) {
NSLog(@"error");
}
我使用的是静态图标,所以我认为没有悬空指针的可能性,我还检查了我们是否传递了不存在的文件路径,然后它返回“NO”。但它并没有崩溃。
这很少可重现..一旦重新产生就会粘贴错误