首页 文章

1个插件中的多个自定义过滤器?

提问于
浏览
1

我将从同一个文件中获取多个内核(以及我现在无法回忆的一些类似线索),似乎我可以在1个插件中提供它们 . 我吠叫错了树,还是可行的?

我做了一个公认的有缺陷的尝试,并且2个过滤器确实出现了 . 但是,有一个是有缺陷的,使用 [[CIFilter filterWithName:filterName] attributes] 就会为参数列表生成null .

我相信我现在已经修好了,但 [CIPlugIn loadAllPlugIns] "loads newly added image units, but image units (and the filters they contain) that are already loaded are not removed."要么我的修复被忽略了,要么我实际上没有修复它 . 除非有人知道卸载过滤器的方法(核心图像编程指南暗示可能),否则我无法确定是否重新启动 .

1 回答

  • 1

    显然我误解了CIPlugin系统是如何工作的:它不是全局的 . 也就是说,每个程序加载的插件都独立于其他程序 . 因此,要更新插件,只需关闭所有正在使用它的程序,然后替换插件 .

    要回答主要问题,是的,在1个插件中放置多个过滤器相当容易 .

    • 每个过滤器都需要它自己的 XxxPlugInLoader : NSObject <CIPlugInRegistration> 类和 Xxx : CIFilter 类 . (过滤器' bundleForClass 似乎都来自同一个捆绑包 . )

    • 内核可以在同一个* .cikernel文件中,但如果一起避免为每个过滤器加载* .cikernel(它会使't hurt, but it'效率低下) .

    • 设置1个Description.plist和1个Description.strings,其中包含所有过滤器的信息 . 在plist中,每个过滤器的 CIFilterClass 条目必须与上面定义的CIFilter类匹配 . 每个过滤器 CIAttributeDescription 条目都是字符串文件的一个键 .

相关问题