标签:
原文链接
http://www.open-open.com/lib/view/open1465637638193.html
每个项目都有一个入口,然后进行初始化操作,React Native 也不例外。一个不含 Objective-C 代码的项目留给我们的唯一线索就是位于 AppDelegate 文件中的代码:
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"reading" initialProperties:nil launchOptions:launchOptions];
用户能看到的一切内容都来源于这个 RootView ,所有的初始化工作也都在这个方法内完成。
在这个方法内部,在创建 RootView 之前,React Native 实际上先创建了一个 Bridge 对象。它是 Objective-C 与 JavaScript 交互的桥梁,后续的方法交互完全依赖于它,而整个初始化过程的最终目的其实也就是创建这个桥梁对象。
初始化方法的核心是 setUp 方法(在RCTBridge.m下),而 setUp 方法的主要任务则是创建 BatchedBridge 。
- (void)setUp { ... [self createBatchedBridge]; RCT_PROFILE_END_EVENT(0, @"", nil); }
BatchedBridge 的作用是批量读取 JavaScript 对 Objective-C 的方法调用,同时它内部持有一个 JavaScriptExecutor ,顾名思义,这个对象用来执行 JavaScript 代码。
创建 BatchedBridge 的关键是 start 方法,它可以分为五个步骤:
标签:
原文地址:http://www.cnblogs.com/johnzhu/p/5913595.html