可可/ Objective-C插件冲突
||
我的应用程序具有一个插件系统,该系统允许我的用户编写自己的插件,这些插件在运行时加载。通常这很好,但是在某些情况下,两个插件使用相同的库,这将导致这两个插件之间发生冲突。
例:
插件A希望使用TouchJSON来处理JSON,因此创建者将TouchJSON代码添加到插件源中,并对其进行编译并链接到插件二进制文件中。后来,插件B也希望使用相同的库,并且功能完全相同。现在,当我的应用程序加载这两个不同的插件时,它会检测到并发出如下警告:
CJSONScanner类在以下位置实现
[path_to_plugin_a]和
[path_to_plugin_b]。两者之一
将会被使用。哪一个未定义。
由于我的应用程序仅加载插件并确保它们符合特定协议,因此我无法控制要加载的插件以及两个或多个插件使用同一个库。
只要两个插件都使用完全相同的库版本,这可能就会起作用,但是一旦一个插件中的API发生更改,就会出现很多问题。
有什么我可以做的吗?
没有找到相关结果
已邀请:
2 个回复
马口
购藏盗码韦
进行检查)。客户端代码还必须使用“ 1”,而不是直接引用类。 当然,如果您无法控制插件,则无法实施这两种方案。您能做的最好的就是提供适当的指导原则并可能提供基础架构;例如,在第二种情况下,加载可由应用程序处理,如果插件的Info.plist中没有可用的包,则可以通过指定要检查的类以及要加载的嵌入式包的名称来处理。