Attach RCTModuleRegistry to TurboModules
Summary: Changelog: [Internal] Reviewed By: PeteTheHeat Differential Revision: D25414882 fbshipit-source-id: 9e45ffb86cf69a2d1921b7ff1c713c186a8c4e01
This commit is contained in:
Родитель
6f02942dc1
Коммит
5b0957962a
|
@ -172,6 +172,8 @@ static Class getFallbackClassFromName(const char *name)
|
|||
std::shared_timed_mutex _turboModuleHoldersSharedMutex;
|
||||
std::mutex _turboModuleHoldersMutex;
|
||||
std::atomic<bool> _invalidating;
|
||||
|
||||
RCTModuleRegistry *_moduleRegistry;
|
||||
}
|
||||
|
||||
- (instancetype)initWithBridge:(RCTBridge *)bridge
|
||||
|
@ -183,6 +185,9 @@ static Class getFallbackClassFromName(const char *name)
|
|||
_delegate = delegate;
|
||||
_bridge = bridge;
|
||||
_invalidating = false;
|
||||
_moduleRegistry = [RCTModuleRegistry new];
|
||||
[_moduleRegistry setBridge:bridge];
|
||||
[_moduleRegistry setTurboModuleRegistry:self];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(bridgeWillInvalidateModules:)
|
||||
|
@ -535,6 +540,25 @@ static Class getFallbackClassFromName(const char *name)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attach the RCTModuleRegistry to this TurboModule, which allows this TurboModule
|
||||
* To load other NativeModules & TurboModules.
|
||||
*
|
||||
* Usage: In the NativeModule @implementation, include:
|
||||
* `@synthesize moduleRegistry = _moduleRegistry`
|
||||
*/
|
||||
if ([module respondsToSelector:@selector(moduleRegistry)] && _moduleRegistry) {
|
||||
@try {
|
||||
[(id)module setValue:_moduleRegistry forKey:@"moduleRegistry"];
|
||||
} @catch (NSException *exception) {
|
||||
RCTLogError(
|
||||
@"%@ has no setter or ivar for its module registry, which is not "
|
||||
"permitted. You must either @synthesize the moduleRegistry property, "
|
||||
"or provide your own setter method.",
|
||||
RCTBridgeModuleNameForClass([module class]));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Some modules need their own queues, but don't provide any, so we need to create it for them.
|
||||
* These modules typically have the following:
|
||||
|
|
Загрузка…
Ссылка в новой задаче