我有一个适用于Mac OS X的应用程序,它支持打算同时加载的插件。其中一些插件是在Cocoa框架的基础上构建的,可以在一个插件中接收更新,而不是另一个。鉴于Objective-C当前的函数调度方法,任何插件对给定Objective-C例程的任何调用都将每次都进入相同的例程。这意味着插件A可以在插件B中找到自己的,并带有一个简单的Objective-C调用!显然,我们正在寻找的是每个插件都与它自己的框架版本进行交互。 Ihavebeenreading一些对Objective-C和这种特殊的需求,但还没有找到它最终的解决办法呢。Objective-C函数调度冲突;或者,如何实现“命名空间”?
更新:上面我用的是“框架”的误导性:该框架是一个静态链接库,内置到需要它的插件(一个或多个)。然而,Objective-C处理分派的方式,即使这些静态链接的不同代码碎片也会在Objective-C调度程序中混合,导致意想不到的后果。
更新2:我对answer provided here仍然有点模糊,因为它似乎没有像未经证实的假设那样提出解决方案。
请参阅HTTP提出的想法的衍生物://计算器。com/questions/178434/what-is-the-best-way-to-solve-an-objective-c-namespace-collision – 2009-09-25 00:02:48