目标C:如何将单例类的实例变量传递给另一个类的其他类?

时间:2017-12-04 06:24:58

标签: ios objective-c

假设我正在创建一个静态库,并且我有两个 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中实现这一目标。

1 个答案:

答案 0 :(得分:0)

也许试试

在ClassA.h中

+ (void) testClassBFunctionFromClassA;

在ClassA.m

+ (void) testClassBFunctionFromClassA{

    [[ClassB sharedInstance] Test_ClassB_function];

}

在ViewController.m中

- (IBAction)Button1:(id)sender {
    [ClassA testClassBFunctionFromClassA];
}