Plz帮助我理解principalClass的用途是什么?它的语法是什么.我理解它是在NSBundle类中,但我们可以为任何捆绑创建它是否仅适用于可萝卜捆绑?plz帮我了解principalClass的概念.
感谢您.
我将举例说明如何创建和加载包作为插件.希望这对你有很大的帮助.我必须说我同意其他2个(迄今为止)的答案.所以...
创建一个Xcode项目为"Bundle"(在Xcode 3.2.6中是在New Project-> Framework&Library-> select"Bundle").创建以下文件......
PClass.h
#import <Foundation/Foundation.h>
@interface PClass : NSObject {
}
- (NSString*) stringMessage;
@end
Run Code Online (Sandbox Code Playgroud)
PClass.m
- (NSString*) stringMessage {
return @"Hallo from plugin";
}
Run Code Online (Sandbox Code Playgroud)
在项目.plist文件中添加以下两个条目:
"捆绑显示名称""MyPlugin"
"校长班""PClass"
然后编译项目并将二进制文件(.../build/Debug/yourPlugin.bundle)移动到您喜欢的文件夹中以保存您项目的插件(可以将其复制到一个项目.Plagins /中关心).
然后到已经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
}
Run Code Online (Sandbox Code Playgroud)
}
您刚刚通过其Principal Class加载了一个bundle作为应用程序的插件.
捆绑软件的“主要类”仅仅是被标记为捆绑软件的主要类的Objective-C类,因此将由捆绑软件实例的-principalClass方法返回。
仅此而已,没有魔力。
它仅适用于可装入包,因为仅可装入包定义了新的Objective-C类。
| 归档时间: |
|
| 查看次数: |
2618 次 |
| 最近记录: |