假设我正在创建一个静态库,并且我有两个 NSObject
类名为 ClassA
和 ClassB
,用户可以访问 ClassA.h
来执行 library
中的功能。现在我已经在 ClassB
中定义了一些功能,我希望用户根据需要从 ViewController
执行这些功能,但我我们不想向用户提供 ClassB.h
,以便用户可以使用 ClassA
访问它。
ClassA.h
#import <Foundation/Foundation.h>
@interface ClassA : NSObject
+ (void) method_1;
+ (void) method_2;
+ (void) method_3;
// Tried to pass Instance of ClassB to user ViewController
+ (id) getClassBInstanceObject;
@end
ClassA.m
#import "ClassA.h"
#import "ClassB.h"
@implementation ClassA
+ (void) method_1 {
//Some Stuffs Done Here !!
}
+ (void) method_2 {
//Some Stuffs Done Here !!
}
+ (void) method_3 {
//Some Stuffs Done Here !!
}
// Tried to pass Instance of ClassB to user ViewController
+ (id) getClassBInstanceObject {
id objB = [ClassB sharedInstance];
return objB;
}
@end
ClassB.h
#import <Foundation/Foundation.h>
@interface ClassB : NSObject
+ (id)sharedInstance;
-(void)Test_ClassB_function;
@end
ClassB.m
#import "ClassB.h"
@implementation ClassB
+ (id)sharedInstance {
static ClassB *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
});
return instance;
}
-(void)Test_ClassB_function {
NSLog(@"this is the method called from ClassB !!!!");
}
@end
现在,用户有一个静态库FAT(lib.a
)文件和 ClassA.h
文件,他将在其项目中包含然后他可以将 ClassA.h
导入到 ViewController
类来执行库函数,用户想要执行 Test_ClassB_function
使用 ClassA
。
的 ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
ViewController.m
#import "ViewController.h"
#import "ClassA.h"
@interface ViewController ()
@end
@implementation ViewController
override func viewDidLoad() {
super.viewDidLoad()
[ClassA method_1];
[ClassA method_2];
[ClassA method_3];
}
- (IBAction)Button1:(id)sender {
id class_B_Object = [ClassA getClassBInstanceObject];
[class_B_Object Test_ClassB_function];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
任何人都可以告诉我如何在Objective-C中实现这一目标。
答案 0 :(得分:0)
也许试试
在ClassA.h中
+ (void) testClassBFunctionFromClassA;
在ClassA.m
+ (void) testClassBFunctionFromClassA{
[[ClassB sharedInstance] Test_ClassB_function];
}
在ViewController.m中
- (IBAction)Button1:(id)sender {
[ClassA testClassBFunctionFromClassA];
}