You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@weex.apache.org by GitBox <gi...@apache.org> on 2018/09/21 15:03:09 UTC

[GitHub] cxfeng1 closed pull request #1563: [iOS] Remove object from ref map after delete.

cxfeng1 closed pull request #1563: [iOS] Remove object from ref map after delete.
URL: https://github.com/apache/incubator-weex/pull/1563
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.h b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.h
index 66bb9886f0..b58d32731c 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.h
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.h
@@ -164,6 +164,8 @@ namespace WeexCore
 
 + (void)addChildRenderObject:(void*)child toParent:(void*)parent;
 
++ (void)removeRenderObjectFromMap:(NSString*)pageId object:(void*)object;
+
 + (void)callAddElement:(NSString*)pageId parentRef:(NSString*)parentRef data:(NSDictionary*)data index:(int)index;
 
 + (void)callCreateBody:(NSString*)pageId data:(NSDictionary*)data;
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
index 54154ee7e6..d6066921e2 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
@@ -988,6 +988,15 @@ + (void)addChildRenderObject:(void*)child toParent:(void*)parent
     (static_cast<WeexCore::RenderObject*>(parent))->AddRenderObject(-1, (static_cast<WeexCore::RenderObject*>(child)));
 }
 
++ (void)removeRenderObjectFromMap:(NSString*)pageId object:(void*)object
+{
+    using namespace WeexCore;
+    RenderPage* page = RenderManager::GetInstance()->GetPage([pageId UTF8String] ?: "");
+    if (page != nullptr) {
+        page->RemoveRenderFromRegisterMap(static_cast<RenderObject*>(object));
+    }
+}
+
 static void _convertToCString(id _Nonnull obj, void (^callback)(const char*))
 {
     if ([obj isKindOfClass:[NSString class]]) {
diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
index 19d4541736..aa3618ba3c 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
@@ -639,6 +639,7 @@ - (void)removeSubcomponentCssNode:(WXComponent *)subcomponent
             [c _setRenderObject:nullptr];
         }
         
+        [WXCoreBridge removeRenderObjectFromMap:subcomponent.weexInstance.instanceId object:node];
         delete node; // also will delete all children recursively
     }
 }
diff --git a/weex_core/Source/core/render/page/render_page.h b/weex_core/Source/core/render/page/render_page.h
index 57687cb285..51629b3d1c 100644
--- a/weex_core/Source/core/render/page/render_page.h
+++ b/weex_core/Source/core/render/page/render_page.h
@@ -40,10 +40,6 @@ class RenderPage {
  private:
   void TraverseTree(RenderObject *render, long index);
 
-  void PushRenderToRegisterMap(RenderObject *render);
-
-  void RemoveRenderFromRegisterMap(RenderObject *render);
-
   void SendCreateBodyAction(RenderObject *render);
 
   void SendAddElementAction(RenderObject *child, RenderObject *parent,
@@ -137,6 +133,12 @@ class RenderPage {
                           const std::string &method, const std::string &args, int argc = 0);
 
   void SetRootRenderObject(RenderObject *root);
+    
+  // ****** Render object managing ****** //
+  
+  void PushRenderToRegisterMap(RenderObject *render);
+    
+  void RemoveRenderFromRegisterMap(RenderObject *render);
 
   // ****** Life Cycle ****** //
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services