Я приведу вам пример того, как вы можете создать и загрузить пакет в качестве плагина. Надеюсь, что это вам очень поможет. Я должен сказать, что согласен с двумя другими (пока) ответами. Так...
Создайте проект Xcode как "Bundle" (в Xcode 3.2.6 в New Project->Framework & Library-> выберите "Bundle"). Создайте следующие файлы...
PКласс.h
#import <Foundation/Foundation.h>
@interface PClass : NSObject {
}
- (NSString*) stringMessage;
@end
PКласс.м
- (NSString*) stringMessage {
return @"Hallo from plugin";
}
в файле проектов .plist добавьте следующие две записи:
"Отображаемое имя пакета" "MyPlugin"
"Основной класс" "PClass"
Затем скомпилируйте проект и переместите двоичный файл (.../build/Debug/yourPlugin.bundle) в папку, в которой вы хотите хранить плагины вашего проекта (можно скопировать в aProject.app/Plugins/ с небольшим дополнением). забота).
Затем к уже имеющемуся проекту Xcode добавьте следующее:
- (void) loadPlugin {
id bundle = [NSBundle bundleWithPath:@"the path you/placed/yourPlugin.bundle"];
NSLog(@"%@", [[bundle infoDictionary] valueForKey:@"CFBundleDisplayName"]);
// Here you can preview your plugins names without loading them if you don't need to or just to
// display it to GUI, etc
NSError *err;
if(![bundle loadAndReturnError:&err]) {
// err
} else {
// bundle loaded
Class PluginClass = [bundle principalClass]; // here is where you need your principal class!
// OR...
//Class someClass = [bundle classNamed:@"KillerAppController"];
id instance = [[PluginClass alloc] init];
NSLog(@"%@", [instance stringMessage]);
[instance release]; // If required
[bundle unload]; // If required
}
}
Вы только что загрузили пакет через его основной класс в качестве плагина приложения.
person
Vassilis
schedule
01.06.2011