我已经为 Mac OS X 开发了一个 Cocoa 应用程序。我想制作一些自定义插件(也带有接口)并在我的应用程序中动态加载它们。我的应用程序应该查看文件夹并检索所有文件(插件)并使它们在用户界面中可用。
有人可以建议我一个起点吗?
我怎样才能动态加载它们,插件必须是动态库或某事?
谢谢。
我已经为 Mac OS X 开发了一个 Cocoa 应用程序。我想制作一些自定义插件(也带有接口)并在我的应用程序中动态加载它们。我的应用程序应该查看文件夹并检索所有文件(插件)并使它们在用户界面中可用。
有人可以建议我一个起点吗?
我怎样才能动态加载它们,插件必须是动态库或某事?
谢谢。
你想看看NSBundle
。一个可加载的包(一个框架是一个可加载的包)项目将产生你想要的。如果principleClass
将包的属性设置为插件的顶级类,则可以从加载的包中检索该类的实例。您可以在给定的路径加载一个包
id bundle = [NSBundle bundleWithPath:pathToBundle];
NSError *err;
if(![bundle loadAndReturnError:&err]) {
// err contains error info
} else {
// bundle loaded properly
Class pluginClass = [bundle principleClass];
// instantiate pluginClass and off you go...
}