refactor(ios): minor update of UIManager and ShadowView

This commit is contained in:
wwwcg
2024-10-12 15:51:37 +08:00
committed by wwwcg
parent 92759d90f7
commit e1e16cc8d8
2 changed files with 19 additions and 18 deletions
+18 -17
View File
@@ -198,16 +198,16 @@ NSString *const HippyUIManagerDidEndBatchNotification = @"HippyUIManagerDidEndBa
NSHashTable<id<HippyComponent>> *_componentTransactionListeners;
std::mutex _renderQueueLock;
NSMutableDictionary<NSString *, id> *_viewManagers;
NSArray<Class> *_extraComponents;
NSMutableArray<Class<HippyImageProviderProtocol>> *_imageProviders;
}
/// All managed ViewManagers
@property (atomic, strong) NSMutableDictionary<NSString *, id> *viewManagers;
/// All extra components
@property (atomic, strong) NSArray<Class> *extraComponents;
@end
@implementation HippyUIManager
@synthesize domManager = _domManager;
@@ -668,36 +668,37 @@ NSString *const HippyUIManagerDidEndBatchNotification = @"HippyUIManagerDidEndBa
- (__kindof HippyViewManager *)viewManagerForViewName:(NSString *)viewName {
HippyBridge *strongBridge = self.bridge;
if (!_viewManagers) {
_viewManagers = [NSMutableDictionary dictionary];
if (_extraComponents) {
for (Class cls in _extraComponents) {
if (!self.viewManagers) {
NSMutableDictionary *viewManagers = [NSMutableDictionary dictionary];
if (self.extraComponents) {
for (Class cls in self.extraComponents) {
NSString *viewName = viewNameFromViewManagerClass(cls);
HippyAssert(![_viewManagers objectForKey:viewName],
HippyAssert(![viewManagers objectForKey:viewName],
@"duplicated component %@ for class %@ and %@", viewName,
NSStringFromClass(cls),
NSStringFromClass([_viewManagers objectForKey:viewName]));
[_viewManagers setObject:cls forKey:viewName];
NSStringFromClass([viewManagers objectForKey:viewName]));
[viewManagers setObject:cls forKey:viewName];
}
}
NSArray<Class> *classes = HippyGetViewManagerClasses(strongBridge);
NSMutableDictionary *defaultViewManagerClasses = [NSMutableDictionary dictionaryWithCapacity:[classes count]];
for (Class cls in classes) {
NSString *viewName = viewNameFromViewManagerClass(cls);
if ([_viewManagers objectForKey:viewName]) {
if ([viewManagers objectForKey:viewName]) {
continue;
}
[defaultViewManagerClasses setObject:cls forKey:viewName];
}
[_viewManagers addEntriesFromDictionary:defaultViewManagerClasses];
[viewManagers addEntriesFromDictionary:defaultViewManagerClasses];
self.viewManagers = viewManagers;
}
// Get and instantiate the class
id object = [_viewManagers objectForKey:viewName];
id object = [self.viewManagers objectForKey:viewName];
if (object_isClass(object)) {
HippyViewManager *viewManager = [object new];
viewManager.bridge = strongBridge;
NSAssert([viewManager isKindOfClass:[HippyViewManager class]], @"Must be a HippyViewManager instance");
[_viewManagers setObject:viewManager forKey:viewName];
[self.viewManagers setObject:viewManager forKey:viewName];
object = viewManager;
}
return object;
@@ -1118,7 +1119,7 @@ NSString *const HippyUIManagerDidEndBatchNotification = @"HippyUIManagerDidEndBa
}
- (void)registerExtraComponent:(NSArray<Class> *)extraComponents {
_extraComponents = extraComponents;
self.extraComponents = extraComponents;
}
@@ -97,7 +97,7 @@ static NSString *const HippyBackgroundColorPropKey = @"backgroundColor";
if ((self = [super init])) {
_propagationLifecycle = NativeRenderUpdateLifecycleUninitialized;
_frame = CGRectMake(0, 0, NAN, NAN);
_objectSubviews = [NSMutableArray arrayWithCapacity:8];
_objectSubviews = [NSMutableArray array];
_confirmedLayoutDirection = hippy::Direction::Inherit;
_layoutDirection = hippy::Direction::Inherit;
}