美文网首页ReactNative专题
RN与swift混合开发, RCTViewManager内存释放

RN与swift混合开发, RCTViewManager内存释放

作者: 那年那月那花儿 | 来源:发表于2021-09-14 15:59 被阅读0次

    在reactnative和iOS混合开发过程中, 继承自RCTViewManager的原生组件, 必须实现方法:

    override func view() -> UIView {
    
    }
    

    由于对RCTViewManager的docs没有细看, 导致出现如下代码:

    lazy var testView: TestView = {
            let view = TestView()
            return view
     }()
    
    override func view() -> UIView {
           return  testView
    }
    

    这样会导致该testView无法释放, 无论多少界面使用该testView, 加载的始终是一个view, init方法只走一次, 通过对RCTViewManager文档的了解, 表明该view不该被缓存, 始终加载的是新的view

    /**
     * This method instantiates a native view to be managed by the module. Override
     * this to return a custom view instance, which may be preconfigured with default
     * properties, subviews, etc. This method will be called many times, and should
     * return a fresh instance each time. The view module MUST NOT cache the returned
     * view and return the same instance for subsequent calls.
     */
    - (UIView *)view;
    

    解决方法:

    override func view() -> UIView {
           return  TestView()
    }
    

    小细节, 特此小记!!!

    相关文章

      网友评论

        本文标题:RN与swift混合开发, RCTViewManager内存释放

        本文链接:https://www.haomeiwen.com/subject/amvcgltx.html