BBAJSBindingManager.h 2.19 KB
//
//  BBAJSBindingManager.h
//  SWAN
//
//  Created by baidu on 2018/7/19.
//  Copyright © 2018年 baidu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <JavaScriptCore/JavaScriptCore.h>
#import "BBAJSBindingBase.h"
#import "BBAJSBindingGlobalBase.h"

@interface BBAJSBindingManager : NSObject

- (instancetype)init NS_UNAVAILABLE;

/**
 获取BBAJSBindingClassManager单例

 @return BBAJSBindingClassManager实例
 */
+ (instancetype)sharedManager;

/**
 * @brief 绑定JSBDomainTypeMaster域下的类和函数到js context下的globalObjectName对象
 *
 * @param jsContext js context
 * @param globalObjectName 被绑定到的全局对象
 */
- (void)bindCachedClassAndFunctionToJsContext:(JSContext *)jsContext
                             globalObjectName:(NSString *)globalObjectName;

/**
 * @brief 绑定指定域下的类和函数到js context下的globalObjectName对象
 *
 * @param jsContext js context
 * @param globalObjectName 被绑定到的全局对象
 * @param domain 域
 */
- (void)bindCachedClassAndFunctionToJsContext:(JSContext *)jsContext
                             globalObjectName:(NSString *)globalObjectName
                                       domain:(JSBDomainType)domain ;

/**
 根据实现类名获取绑定类名

 @param impClassName 绑定转发的实现类名
 @return 对应的类名
 */
- (NSString *)bindingClassNameFromImplementClassName:(NSString *)impClassName;


/**
 * @brief 保存全局对象
 *
 * @param globalObject 全局对象
 * @param key 全局对象对应的key值
 */
- (void)setGlobalObject:(BBAJSBindingGlobalBase *)globalObject forKey:(NSString *)key;


/**
 * @brief 获取全局对象
 *
 * @param key 全局对象对应的key值
 */
- (BBAJSBindingGlobalBase *)getGlobalObjectForKey:(NSString *)key;


/**
 * @brief 移除全局对象
 *
 * @param key 全局对象对应的key值
 */
- (void)removeGlobalObjectForKey:(NSString *)key;

/**
 * @brief 保存managerValue对象
 *
 * @param managerValue managerValue对象
 */
- (void)addWrapperManagerValue:(JSManagedValue *)managerValue;

/**
 * @brief 移除managerValue对象
 *
 * @param managerValue managerValue对象
 */
- (void)removeWrapperManagerValue:(JSManagedValue *)managerValue;

@end