You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ac...@apache.org on 2018/03/05 10:11:21 UTC

incubator-weex git commit: * [iOS] try to make componentManager dealloc at componentThread resolving multi thread problem

Repository: incubator-weex
Updated Branches:
  refs/heads/master 6901b8354 -> 2fa5833ea


* [iOS] try to make componentManager dealloc at componentThread resolving multi thread problem


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/2fa5833e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/2fa5833e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/2fa5833e

Branch: refs/heads/master
Commit: 2fa5833ea5e29f86cba6373b17fb3ec729af92a6
Parents: 6901b83
Author: acton393 <zh...@gmail.com>
Authored: Mon Mar 5 18:11:10 2018 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Mon Mar 5 18:11:10 2018 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m | 11 +++++++++++
 1 file changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2fa5833e/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
index 0ca0311..e3aafcc 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
@@ -71,6 +71,7 @@ typedef enum : NSUInteger {
     WXThreadSafeMutableDictionary *_moduleEventObservers;
     BOOL _performanceCommit;
     BOOL _needDestroy;
+    BOOL _syncDestroyComponentManager;
 }
 
 - (void)dealloc
@@ -78,6 +79,11 @@ typedef enum : NSUInteger {
     [_moduleEventObservers removeAllObjects];
     [self removeObservers];
     [[NSNotificationCenter defaultCenter] removeObserver:self];
+    if (_syncDestroyComponentManager) {
+        WXPerformBlockSyncOnComponentThread(^{
+            _componentManager = nil;
+        });
+    }
 }
 
 - (instancetype)init
@@ -104,6 +110,11 @@ typedef enum : NSUInteger {
         _moduleEventObservers = [WXThreadSafeMutableDictionary new];
         _trackComponent = NO;
         _performanceCommit = NO;
+        
+        id configCenter = [WXSDKEngine handlerForProtocol:@protocol(WXConfigCenterProtocol)];
+        if ([configCenter respondsToSelector:@selector(configForKey:defaultValue:isDefault:)]) {
+            _syncDestroyComponentManager = [configCenter configForKey:@"iOS_weex_ext_config.syncDestroyComponentManager" defaultValue:@(YES) isDefault:NULL];
+        }
        
         [self addObservers];
     }