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:
[email protected]


With regards,
Apache Git Services

Reply via email to