From 28f5af0c39d6dcd9d5d63475447ab33fea19b80b Mon Sep 17 00:00:00 2001 From: Martin Kralik Date: Tue, 27 Oct 2015 05:07:44 -0700 Subject: [PATCH] nil instead of empty `RCTViewManagerUIBlock` blocks Summary: Same as in previous diffs. Gets us into a better place to know if we really have UI updates and it's marginally more efficient. Depends on D2571143. (not really) public Reviewed By: nicklockwood Differential Revision: D2571166 fb-gh-sync-id: e8f34521ec2e12156a49f1cd655e92df1db34fca --- React/Modules/RCTUIManager.m | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/React/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m index d8e5d17bc..bfc77eae7 100644 --- a/React/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -509,6 +509,10 @@ extern NSString *RCTBridgeModuleNameForClass(Class cls); } } + if (!viewsWithNewFrames.count) { + // no frame change results in no UI update block + return nil; + } // Perform layout (possibly animated) return ^(__unused RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { RCTResponseSenderBlock callback = self->_layoutAnimation.callback; @@ -583,11 +587,13 @@ extern NSString *RCTBridgeModuleNameForClass(Class cls); NSMutableSet *applierBlocks = [NSMutableSet setWithCapacity:1]; [topView collectUpdatedProperties:applierBlocks parentProperties:@{}]; - [self addUIBlock:^(__unused RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { - for (RCTApplierBlock block in applierBlocks) { - block(viewRegistry); - } - }]; + if (applierBlocks.count) { + [self addUIBlock:^(__unused RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { + for (RCTApplierBlock block in applierBlocks) { + block(viewRegistry); + } + }]; + } } /**