我有一個適用於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