Swift3.0 循环引用

37D10644-6B3C-408D-9EFB-4B2051E12DAE.png

//创建一个导航栏控制器,控制器跳转跳转的controller内容如下---以下代码内容为循环引用

    //创建一个属性
    var completionCallBack:(()->())?
    
    override func viewDidLoad()
    {
        super.viewDidLoad()
        
        //在block中如果出现self. 需要注意
        //循环引用,单方向是不会产生引用的
        //只是闭包对slef执行了copy,闭包执行完成后会自动销毁,同时释放对self的引用
        //如果要循环应用,在闭包的同时用self引用
        LoadData { 
            print(self.view)
        }
    }
    
    func LoadData(completion:() ->()) -> ()
    {
        //使用属性记录闭包 -> self对闭包引用了
        completionCallBack = completion        //如果不写此句则不会实现循环引用
        
        //异步
        DispatchQueue.global().async {
            
            print("耗时操作")
            
            DispatchQueue.main.async{
                
                //回调 执行闭包
                completion()
            }
        }
    }
    
    //类似OC的dealloc
    deinit {
        print("走了")
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,427评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,356评论 25 709
  • 夏天似乎就是无数的苍蝇围绕着烂一地的西瓜、把冰淇淋吃得满脸都是的小孩、还有令人烦躁的蝉鸣。 初夏,我那流离失所的三...
    林柳枫阅读 603评论 2 0
  • 计算算计 昨天中午吃完午饭,看到园区的公告上有datagirls的分享会,内心一阵雀跃,有种找到组织的欣喜,下午的...
    左神话阅读 1,082评论 1 3
  • 小殷姐姐的读报笔记① 保定晚报,头版,一幅巨大的照片映入眼底,照片上,一位70多岁、穿环卫服装的老师傅,正坐在马路...
    小殷姐姐阅读 357评论 0 0

友情链接更多精彩内容