Macos 是否可以在我的应用程序中分发图像单元?
Mac OS X Mavericks 有人告诉我这个问题在MacOSX10.9中已经解决了 原创 我看了文档,没有找到答案。它建议创建图像单元,需要将此单元放入Macos 是否可以在我的应用程序中分发图像单元?,macos,cocoa,quartz-graphics,Macos,Cocoa,Quartz Graphics,Mac OS X Mavericks 有人告诉我这个问题在MacOSX10.9中已经解决了 原创 我看了文档,没有找到答案。它建议创建图像单元,需要将此单元放入~/Library/Graphics/Image Units或/Library/Graphics/Image Units(将图像单元放入Your.app/Contents/Library/Graphics/Image Units中没有效果) 还有其他不推荐的方法来创建映像单元,它允许您分发cikernels并从代码中访问过滤器。但它会阻止
~/Library/Graphics/Image Units
或/Library/Graphics/Image Units
(将图像单元放入Your.app/Contents/Library/Graphics/Image Units
中没有效果)
还有其他不推荐的方法来创建映像单元,它允许您分发cikernels并从代码中访问过滤器。但它会阻止您创建不可执行的过滤器,这是一个很大的性能缺陷
我查看了Pixelmator或Acorn等应用程序包的内容,发现它们也不使用图像单位。我希望这是一个错误,有一种方法可以在应用程序包中分发映像单元
我正在寻找一个解决方案,将由Mac应用商店验证接受
不允许您使用不可执行筛选器的解决方案
从CIPlugIn标头:
/**加载由其URL指定的插件*/
+ (void)loadPlugIn:(NSURL *)url allowNonExecutable:(BOOL)allowNonExecutable
AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7;
/** Loads a plug-in specified by its URL.
If allowExecutableCode is NO, filters containing executable code will not be loaded. If YES, any kind of filter will be loaded. */
+ (void)loadPlugIn:(NSURL *)url allowExecutableCode:(BOOL)allowExecutableCode
AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER;
官方文件中没有列出新方法。因此,要加载捆绑包,只需执行以下操作:
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_6)
{
[CIPlugIn loadPlugIn:[[NSBundle mainBundle] URLForResource:@"YourPlugin" withExtension:@"plugin"]
allowNonExecutable:YES];
}
else
{
[CIPlugIn loadPlugIn:[[NSBundle mainBundle] URLForResource:@"YourPlugin" withExtension:@"plugin"]
allowExecutableCode:YES];
}
除了您提到的库路径外,Mac OS X还将查看
YourApp.app/Contents/Library
我认为,如果您将图像单元放入
YourApp.app/Contents/Library/Graphics/Image Units/
,对不起,应用程序包中的路径拼写错误,一切都应该正常。这不管用,我已经试过了。这很烦人,我绝对认为你应该把它作为一个bug报告给苹果。您的应用程序是否可以提供指向您站点的链接,以便用户可以手动下载和安装捆绑包?我意识到这远远不够理想。是的,我会提交一个bug。我假设有一种plist选项,我应该设置它来告诉系统在哪里查找图像单元。您是否在应用程序启动时调用[CIPlugin loadAllPlugIns]
?
frame #0: 0x00007fff8b6a5d36 CoreImage`-[CIFilter copyWithZone:] + 12
frame #1: 0x00007fff8b7d1c7e CoreImage`-[CIPlugInStandardFilter _provideFilterCopyWithZone:] + 18
frame #2: 0x00007fff8b6a5d59 CoreImage`-[CIFilter copyWithZone:] + 47
frame #3: 0x00007fff8b7d1c7e CoreImage`-[CIPlugInStandardFilter _provideFilterCopyWithZone:] + 18
frame #4: 0x00007fff8b6a5d59 CoreImage`-[CIFilter copyWithZone:] + 47
frame #5: 0x00007fff8b7d1c7e CoreImage`-[CIPlugInStandardFilter _provideFilterCopyWithZone:] + 18
frame #6: 0x00007fff8b6a5d59 CoreImage`-[CIFilter copyWithZone:] + 47