我想将较新版本的bundle加载到目标进程,但这是不可能的,因为已经加载了具有相同名称的bundle。更改捆绑包的CFBundleVersion
或CFBundleShortVersionString
不起作用。最简单的方法就是杀死目标进程并重新启动它。但我认为这不是最佳方式。那还有另一种方法吗?
答案 0 :(得分:3)
我遇到了与mach_inject相同的问题。在没有修改mach_inject的情况下,我没有看到直接的解决方案。
我的解决方案是创建两个包。考虑第一个bundle是真正的插件的插件管理器。插件管理器非常简单,希望永远不需要升级,它加载和卸载添加了清理代码的原始包。
我正在使用Apple的NSBundle类来加载和卸载插件。在卸载之前,我调用原始插件中的主要类来清理它。
卸载用目标C编写的包很危险。 2&一般情况下都是如此。