gpt4 book ai didi

macos - 如何调用插件主类以外的类的方法

转载 作者:行者123 更新时间:2023-12-03 17:14:42 27 4
gpt4 key购买 nike

我创建了一个插件,并有 3 个类,名为 PluginPrincipalClass、ClassOne 和 ClassTwo。我的类中有以下代码片段。

#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];

这工作正常。如果我想调用 ClassOne 或 ClassTwo 的方法。如何从我的基础应用程序实例化并调用这些方法。是否类似于创建对象 ClassOne 并使用该对象调用方法?

最佳答案

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

像这样:

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

关于macos - 如何调用插件主类以外的类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10278130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com