例:
插件A想要使用touchJSON来处理JSON,因此创建者将touchJsON代码添加到插件源中,并将其编译并链接到插件二进制文件中.后来插件B也希望使用相同的库并完全相同.现在,当我的应用程序加载这两个不同的插件时,它会检测到这个并发出如下警告:
Class CJsONScanner is implemented in
both [path_to_plugin_a] and
[path_to_plugin_b]. One of the two
will be used. Which one is undefined.
由于我的应用程序只是加载插件并确保它们符合某个协议,我无法控制加载哪些插件以及两个或多个插件使用相同的库.
只要两个插件使用完全相同的库版本,这可能会起作用,但只要API在一个插件中发生更改,就会出现一堆问题.
我能做些什么吗?
解决方法 捆绑加载系统没有提供和平解决名称冲突的意思.事实上,我们被告知 ensure ourselves that the problem doesn’t happen,而不是如果它发生了怎么办. (显然,在你的情况下,这是不可能的).你可以用这个问题file a bug report.
如果这对您的应用程序绝对至关重要,您可能希望将捆绑包存放在单独的进程中,并使用某种IPC(可能是NSdistantObject)将数据从程序传递到插件主机.但是,我很确定这是一个受伤的包,所以如果你没有非常明确定义的接口允许分发到不同的进程,那么这可能是一项艰巨的任务.
总结以上是内存溢出为你收集整理的Cocoa / Objective-C插件碰撞全部内容,希望文章能够帮你解决Cocoa / Objective-C插件碰撞所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)