1
我创建了一个插件,并且有一些名为PluginPrincipalClass,ClassOne和ClassTwo的3个类。在我的类中有以下代码片段。如何调用插件主体类以外的类的方法
#import <Cocoa/Cocoa.h>
@interface PluginPrincipalClass : NSObject
@end
#import "PluginPrincipalClass.h"
@implementation PluginPrincipalClass
- (NSInteger)getDownloadPercentage
{
NSLog(@"getDownloadPercentage");
return 10;
}
- (void)downloadSoftwareUpdate
{
NSLog(@"downloadSoftwareUpdate");
}
@end
#import <Cocoa/Cocoa.h>
@interface ClassOne : NSObject
@end
#import "ClassOneh"
@implementation ClassOne
- (void)ClassOneMethod
{
NSLog(@"ClassOneMethod");
}
@end
#import <Cocoa/Cocoa.h>
@interface ClassTwo : NSObject
@end
#import "ClassTwo.h"
@implementation ClassTwo
- (void)ClassTwoMethod
{
NSLog(@"ClassTwoMethod");
}
@end
在我BaseApplication加载插件,并呼吁主要类我有下面的代码片段
NSString *zStrPlugInsPath = [[NSBundle mainBundle] builtInPlugInsPath];
NSArray *zAryBundlePaths = [NSBundle pathsForResourcesOfType:@"plugin"
inDirectory:zStrPlugInsPath];
NSString * zStrPathToPlugin = [zAryBundlePaths lastObject];
NSBundle *znsBundlePlugin = [NSBundle bundleWithPath:zStrPathToPlugin];
// instantiate the principal class and call the method
Class zPrincipalClass = [znsBundlePlugin principalClass];
id zPrincipalClassObj = [[zPrincipalClass alloc]init];
NSInteger downloadPer = [zPrincipalClassObj getDownloadPercentage];
NSLog(@"downloadPer = %ld",downloadPer);
[zPrincipalClassObj downloadSoftwareUpdate];
这是工作fine.If我想打电话给ClassOne或ClassTwo的方法。如何从我的基本应用程序实例化和调用这些方法。是否类似于创建对象ClassOne并使用该对象调用方法?
感谢您的答复,现在我不能对此进行测试代码因为我没有Mac,所以你的意思是说我可以用代码调用ClassOne方法,Class zSecondaryClass = [znsBundlePlugin classNamed:@“ClassOne”]; id zSecondaryClassObj = [[zSecondaryClassObj alloc] init]; [zSecondaryClassObj ClassOneMethod];对? – Akbar 2012-04-23 16:58:32
我相信如此(假设我正确地遵循你的命名/逻辑) – RyanWilcox 2012-04-23 17:00:56