2012-04-23 28 views
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并使用该对象调用方法?

回答

1

我(如果我正确地理解你的问题),要使用一个NSBundle的classNamed:方法:)

像这样:

Class zSecondaryClass = [znsBundlePlugin classNamed: @"StudentClass"]; 
+0

感谢您的答复,现在我不能对此进行测试代码因为我没有Mac,所以你的意思是说我可以用代码调用ClassOne方法,Class zSecondaryClass = [znsBundlePlugin classNamed:@“ClassOne”]; id zSecondaryClassObj = [[zSecondaryClassObj alloc] init]; [zSecondaryClassObj ClassOneMethod];对? – Akbar 2012-04-23 16:58:32

+0

我相信如此(假设我正确地遵循你的命名/逻辑) – RyanWilcox 2012-04-23 17:00:56

相关问题