摘要:
每一个模块、方法都有一个 ID,通过 ID 来调用。 m_registry->callNativeMethod(call.moduleId, call.methodId, std::move(call.arguments), call.callId); 找到对应的模块所有的模块在 ModuleRegistry 都有,存在 modules_ 变量中,通过下面的代码来调用模块对应的方法。 mod... 阅读全文
摘要:
找到所有的模块一般来说,只要在模块中声明 RCT_EXPORT_MODULE 即可。这是个宏,展开后是声明了一个函数,定义了两个函数,如下所示。#define RCT_EXPORT_MODULE(js_name) \RCT_EXTERN void RCTRegisterModule(Class); \+ (NSString *)moduleName { return @#js_name; } \+... 阅读全文
摘要:
- (instancetype)initWithDelegate:(id)delegate bundleURL:(NSURL *)bundleURL moduleProvider:(RCTBridgeModuleListProvider)block launchOptions:(NSD... 阅读全文
摘要:
RCBridge 初始化时声明了一个 CADisplayLink_jsDisplayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(_jsThreadUpdate:)];在 _jsThreadUpdate 函数中,处理界面更新。这个 CADisplayLink 随后被加到 JS 线程对应的 RunLoop 中。... 阅读全文
摘要:
 如果不指定,每一个模块,都会生成自己的一个串行队列。可以通过强行声明一个队列来指定所有方法都在这个队列执行- (dispatch_queue_t)methodQueue{ return dispatch_get_main_queue();}methodQueue方法会在模块被初始化的时候被执行一次,然后会被React Native的桥接机制保存下来,所以你不需要自己保存队列的引用,除非... 阅读全文