Динамически загружать пользовательские плагины (библиотеки) в приложение Какао - PullRequest
3 голосов
/ 28 марта 2011

Я разработал приложение Cocoa для Mac OS X. Я хочу сделать несколько пользовательских плагинов (с интерфейсом тоже) и динамически загружать их в мое приложение.Мое приложение должно заглянуть внутрь папки, извлечь все файлы (плагины) и сделать их доступными в пользовательском интерфейсе.

Может кто-нибудь предложить мне отправную точку?

Как я могу загрузить их динамически, плагины должны быть динамическими библиотеками или sth?

Спасибо.

1 Ответ

4 голосов
/ 28 марта 2011

Вы хотите взглянуть на NSBundle. Загружаемый пакет (Framework - это загружаемый пакет) создаст то, что вы хотите. Если вы установите свойство 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...
}
...