From b9b7fabf980f3b7a0ddbb27df2c08c0d5b823ce4 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Tue, 9 Jan 2018 22:24:24 -0800 Subject: [PATCH] Revert D6641403: [RN] Refined -[RCTUIManager createView:] Differential Revision: D6641403 fbshipit-source-id: f478810413aa49b44c060db898e7e8698bddb8e1 --- React/Modules/RCTUIManager.m | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/React/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m index 61740280bb6..4cefa9157ad 100644 --- a/React/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -967,19 +967,21 @@ RCT_EXPORT_METHOD(createView:(nonnull NSNumber *)reactTag // Dispatch view creation directly to the main thread instead of adding to // UIBlocks array. This way, it doesn't get deferred until after layout. - __block UIView *preliminaryCreatedView; - + __weak RCTUIManager *weakManager = self; RCTExecuteOnMainQueue(^{ - preliminaryCreatedView = [componentData createViewWithTag:reactTag]; - }); - - [self addUIBlock:^(RCTUIManager *uiManager, NSDictionary *viewRegistry) { - if (!preliminaryCreatedView) { + RCTUIManager *uiManager = weakManager; + if (!uiManager) { return; } + UIView *view = [componentData createViewWithTag:reactTag]; + if (view) { + uiManager->_viewRegistry[reactTag] = view; + } + }); - uiManager->_viewRegistry[reactTag] = preliminaryCreatedView; - [componentData setProps:props forView:preliminaryCreatedView]; + [self addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) { + UIView *view = viewRegistry[reactTag]; + [componentData setProps:props forView:view]; }]; [self _shadowView:shadowView didReceiveUpdatedProps:[props allKeys]];