美文网首页
OC 中的block

OC 中的block

作者: 吖几角 | 来源:发表于2016-09-27 21:02 被阅读18次

    简介:block作为消息传递,在oc中的用处非常的广,自定义视图的回调,modal视图的回调,多线程中异步去加载数据等等,它的使用场景和代理有相似的地方,又比代理要广泛的多,所以说,block是每一个程序员都要去掌握的一个知识点.
    block 是c语言函数 是一个匿名的函数,基本的定义格式如下所示

      void (^myBlock)() = ^ {
    
    };
    

    block 的使用有两点需要注意的:1.block 如果引用了外部的变量,会对引用的变量做一次copy,此时引用计数会+1;
    2.block 不可以修改局部的变量,不过要修改的话,要使用__block 来修饰局部变量;

    block 在ARC中,是保存在堆区,在MRC中是保存在栈区,所以在MRC中需要使用使用copy 来记录block属性,在ARC中的话,是Strong,或者是copy都可以;

    block呢存在的一个很大的问题,就是循环引用,如果我们掌握了它循环引用的原因,那么以后再项目中,我们就可以大胆,放心的去使用了.
    造成循环引用是有3种情况,"self . ",属性记录block,以及成员变量,成员变量一定不要出现在block中,

    相关文章

      网友评论

          本文标题:OC 中的block

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