mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-05-28 08:07:25 +08:00
Fix potential retain cycles in Animated iOS
Summary: Fixes potential retain cycles detected by an internal fb tool. ``` First: __NSDictionaryM -> RCTPropsAnimatedNode -> _parentNodes -> __NSDictionaryM -> RCTStyleAnimatedNode -> _childNodes -> __NSDictionaryM Second: RCTScrollView -> _eventDispatcher -> RCTEventDispatcher -> _observers -> __NSArrayM -> RCTNativeAnimatedModule -> _nodesManager -> RCTNativeAnimatedNodesManager -> _uiManager -> RCTUIManager -> _viewRegistry -> __NSDictionaryM -> RCTScrollView ``` First fix: Use weak map for parent and child nodes, strong refs are managed by RCTNativeAnimatedNodesManager Second fix: Make RCTEventDispatcher observers a weak array and make sure we don't keep strong refs to UIManager in RCTNativeAnimatedNodesManager and RCTPropsAnimatedNode. Tested that native animations still work in UIExplorer [IOS] [BUGFIX] [NativeAnimated] - Fix potential retain cycles in Animated iOS Closes https://github.com/facebook/react-native/pull/16506 Differential Revision: D6126400 Pulled By: shergin fbshipit-source-id: 1ac5083f8ab79a806305edc23ae4796ed428f78b
This commit is contained in:
committed by
Facebook Github Bot
parent
18364e95b7
commit
c47759a9ae
@@ -16,7 +16,7 @@
|
||||
[super performUpdate];
|
||||
NSNumber *inputNode = self.config[@"input"];
|
||||
NSNumber *modulus = self.config[@"modulus"];
|
||||
RCTValueAnimatedNode *parent = (RCTValueAnimatedNode *)self.parentNodes[inputNode];
|
||||
RCTValueAnimatedNode *parent = (RCTValueAnimatedNode *)[self.parentNodes objectForKey:inputNode];
|
||||
self.value = fmodf(parent.value, modulus.floatValue);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user