Хорошо, загадка раскрыта.
Секрет находится в реализации AppDelegate:
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:moduleInitialiser launchOptions:nil];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"ExampleProject"
initialProperties:nil];
Указатель RCTRootView инициализируется вызовом
initWithBridge
Конечно, вы должны предварительно выделить объект RCTBridge.
Макрос RCT_Export_Module
не требуется в , который использует вариант , вам просто нужно указать имя модуля:
+ (NSString *)moduleName
{
return @"HelloWorld";
}
Макрос сделает это автоматически.
Я все еще использовал:
initWithBundleURL
В моем собственном проекте дублируется из базового приложения create-реагировать на приложение.
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"ExampleProject"
initialProperties:nil
launchOptions:launchOptions];
РЕДАКТИРОВАТЬ 1 : Хорошо, у меня может быть другая проблема. Он не работает при перезагрузке JavaScript, поэтому приложение запускается только в первый раз. Это также не работает вообще, когда удаленная отладка JS включена. Странно ...