From b84eedd42ef4a3ab39f5dcc4f9a1f100696494d4 Mon Sep 17 00:00:00 2001 From: wwwcg Date: Thu, 23 May 2024 20:46:27 +0800 Subject: [PATCH] fix(ios): make getTurboModule return null when module not exist --- .../module/turbo/HippyTurboModuleManager.mm | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/ios/sdk/module/turbo/HippyTurboModuleManager.mm b/ios/sdk/module/turbo/HippyTurboModuleManager.mm index cd013e512dd..f84008e34ea 100644 --- a/ios/sdk/module/turbo/HippyTurboModuleManager.mm +++ b/ios/sdk/module/turbo/HippyTurboModuleManager.mm @@ -26,6 +26,7 @@ #import "HippyModuleData.h" #import "HippyBridge+Private.h" #import "HippyAssert.h" +#import "HippyLog.h" static NSMutableDictionary *HippyTurboModuleMap; @@ -116,26 +117,27 @@ + (BOOL)isTurboModule:(NSString *)name { } - (__kindof HippyOCTurboModule *)turboModuleWithName:(NSString *)name { - if (!name || name.length == 0) { return nil; } - __kindof HippyOCTurboModule __block * module; + __kindof __block HippyOCTurboModule *turboModule; dispatch_sync(_cacheQueue, ^{ if ([self.turboModuleCache.allKeys containsObject:name]) { - module = [self.turboModuleCache objectForKey:name]; + turboModule = [self.turboModuleCache objectForKey:name]; } else { - Class moduleCls = [HippyTurboModuleMap objectForKey:name] ? : [HippyOCTurboModule class]; + Class moduleCls = [HippyTurboModuleMap objectForKey:name]; if ([moduleCls conformsToProtocol:@protocol(HippyTurboModuleImpProtocol)]) { - module = [[moduleCls alloc] initWithName:name bridge:_bridge]; - [self.turboModuleCache setObject:module forKey:name]; - } else { + turboModule = [[moduleCls alloc] initWithName:name bridge:_bridge]; + [self.turboModuleCache setObject:turboModule forKey:name]; + } else if (moduleCls) { HippyAssert(NO, @"moduleClass of %@ is not conformsToProtocol(HippyTurboModuleImpProtocol)!", name); + } else { + HippyLogWarn(@"TurboModule (%@) is not exist!", name); } } }); - return module; + return turboModule; } - (void)bindJSObject:(JSValue *)jsObj toModuleName:(NSString *)moduleName {