使用xcassets中的imageNamed加载NSImage会在较旧的osx版本中崩溃

lea*_*rco 8 macos xcode nsimage imagenamed

所以,我有一个xcassets,在很多应用程序之间共享.我正在Mac Mini中使用Xcode8进行开发,其中安装了MacOs Sierra.如果我在开发机器中编译并运行,则根本没有问题.但是,当我尝试在OSX Mavericks的设备中运行它时,我遇到了崩溃.这是报告中的痕迹

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fff887dc866 __pthread_kill + 10
1   libsystem_pthread.dylib         0x00007fff87a3935c pthread_kill + 92
2   libsystem_c.dylib               0x00007fff88614bba abort + 125
3   libsystem_c.dylib               0x00007fff885dea5f __assert_rtn + 321
4   com.apple.coreui                0x00007fff875aa1a7 CUIRenditionKeySetValueForAttribute + 307
5   com.apple.coreui                0x00007fff875a9004 -[CUIStructuredThemeStore _canGetRenditionWithKey:isFPO:lookForSubstitutions:] + 200
6   com.apple.coreui                0x00007fff875a8f1b -[CUIStructuredThemeStore canGetRenditionWithKey:] + 22
7   com.apple.coreui                0x00007fff875c4eab -[CUICatalog _resolvedRenditionKeyForName:scaleFactor:deviceIdiom:deviceSubtype:] + 291
8   com.apple.coreui                0x00007fff875c4c53 -[CUICatalog imageWithName:scaleFactor:deviceIdiom:deviceSubtype:] + 29
9   com.apple.AppKit                0x00007fff88820b1b +[NSImage _catalogImageWithName:bundle:] + 132
10  com.apple.AppKit                0x00007fff8881aefd +[NSImage imageNamed:] + 261
Run Code Online (Sandbox Code Playgroud)

如果我从xcassets中删除图像并将其"单独"包含在应用程序的包中 - 通过将其放入应用程序的项目导航器 - 它加载就好了.但是如果可能的话我想避免这种情况,因为在一个xcassets中共享图像更清晰.

有什么想法或想法吗?提前致谢.

lea*_*rco 8

我可以通过Apple为iOS 7设备提供的解决方法绕过此错误:

要解决此问题,请将部署目标更新为iOS 8.0或更高版本,或将单个映像添加到资产目录中,该资产目录在映像集中至少指定了五个属性,例如:scale(1x,2x,3x)idiom(添加iPad,iPhone和通用资产)方向(从左到右,从右到左)宽度/高度类(任何和紧凑等等)内存(添加1 GB资产)图形(添加Metal 1v2资产)它没有必要在代码中使用图像或添加所有这些属性.(27852391)

这是虚拟图像集的样子:

虚拟的图像集