美文网首页
React Native iOS中NativeModule的初始

React Native iOS中NativeModule的初始

作者: xinguoshui | 来源:发表于2019-03-08 11:29 被阅读0次

    初始化一个module需要调用RCT_EXPORT_MODULE。

    #define RCT_EXPORT_MODULE(js_name) \
    RCT_EXTERN void RCTRegisterModule(Class); \  
    + (NSString *)moduleName { return @#js_name; } \
    + (void)load { RCTRegisterModule(self); }
    
    

    ObjectC中一个文件的引用会先调用load方法,所以这里会先调用RCTRegisterModule(self), RCTRegisterModule的实现在RCTBridge.m中。

    /**
     * Register the given class as a bridge module. All modules must be registered
     * prior to the first bridge initialization.
     */
    void RCTRegisterModule(Class);  
    void RCTRegisterModule(Class moduleClass)  
    {
      static dispatch_once_t onceToken;
      dispatch_once(&onceToken, ^{
        RCTModuleClasses = [NSMutableArray new];
      });
    
      RCTAssert([moduleClass conformsToProtocol:@protocol(RCTBridgeModule)],
                @"%@ does not conform to the RCTBridgeModule protocol",
                moduleClass);
    
      // Register module
      [RCTModuleClasses addObject:moduleClass];
    }
    
    

    相关文章

      网友评论

          本文标题:React Native iOS中NativeModule的初始

          本文链接:https://www.haomeiwen.com/subject/lttrpqtx.html