我将从同一个文件中获取多个内核(以及我现在无法回忆的一些类似线索),似乎我可以在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 回答
显然我误解了CIPlugin系统是如何工作的:它不是全局的 . 也就是说,每个程序加载的插件都独立于其他程序 . 因此,要更新插件,只需关闭所有正在使用它的程序,然后替换插件 .
要回答主要问题,是的,在1个插件中放置多个过滤器相当容易 .
每个过滤器都需要它自己的
XxxPlugInLoader : NSObject <CIPlugInRegistration>
类和Xxx : CIFilter
类 . (过滤器'bundleForClass
似乎都来自同一个捆绑包 . )内核可以在同一个* .cikernel文件中,但如果一起避免为每个过滤器加载* .cikernel(它会使't hurt, but it'效率低下) .
设置1个Description.plist和1个Description.strings,其中包含所有过滤器的信息 . 在plist中,每个过滤器的
CIFilterClass
条目必须与上面定义的CIFilter类匹配 . 每个过滤器CIAttributeDescription
条目都是字符串文件的一个键 .