Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 是否可以在我的应用程序中分发图像单元?_Macos_Cocoa_Quartz Graphics - Fatal编程技术网

Macos 是否可以在我的应用程序中分发图像单元?

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并从代码中访问过滤器。但它会阻止

Mac OS X Mavericks

有人告诉我这个问题在MacOSX10.9中已经解决了

原创

我看了文档,没有找到答案。它建议创建图像单元,需要将此单元放入
~/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