diff --git a/React/Base/RCTBridge.m b/React/Base/RCTBridge.m index 5b63b1d0bb..52e0ecd98c 100644 --- a/React/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -496,7 +496,8 @@ static RCTSparseArray *RCTExportedMethodsByModuleID(void) Method method = methods[i]; SEL selector = method_getName(method); if ([NSStringFromSelector(selector) hasPrefix:@"__rct_export__"]) { - NSArray *entries = ((NSArray *(*)(id, SEL))objc_msgSend)(moduleClass, selector); + IMP imp = method_getImplementation(method); + NSArray *entries = ((NSArray *(*)(id, SEL))imp)(moduleClass, selector); RCTModuleMethod *moduleMethod = [[RCTModuleMethod alloc] initWithObjCMethodName:entries[1] JSMethodName:entries[0] @@ -1018,7 +1019,7 @@ RCT_INNER_BRIDGE_ONLY(_invokeAndProcessModule:(NSString *)module method:(NSStrin if ([module conformsToProtocol:@protocol(RCTFrameUpdateObserver)]) { [_frameUpdateObservers addObject:module]; - } + } }]; } diff --git a/React/Base/RCTBridgeModule.h b/React/Base/RCTBridgeModule.h index fc662778ca..90090e8471 100644 --- a/React/Base/RCTBridgeModule.h +++ b/React/Base/RCTBridgeModule.h @@ -176,7 +176,7 @@ extern const dispatch_queue_t RCTJSThread; * Like RCT_EXTERN_REMAP_METHOD, but allows setting a custom JavaScript name. */ #define RCT_EXTERN_REMAP_METHOD(js_name, method) \ - + (NSArray *)RCT_CONCAT(__rct_export__, __COUNTER__) { \ + + (NSArray *)RCT_CONCAT(__rct_export__, RCT_CONCAT(js_name, RCT_CONCAT(__LINE__, __COUNTER__))) { \ return @[@#js_name, @#method]; \ } \