美文网首页
Block注意点如下

Block注意点如下

作者: shalapovar | 来源:发表于2017-05-23 17:17 被阅读29次

    block同时具有函数和实力便来给你的性质,使用起来方便,代码整洁。

    1)在块内改变外部变量的值时候,在外部变量前加__block,否则该值在block块内部是只读的。

    2)在引用某个实例变量或者所在控制器本身时候,在ARC下,要再前面加__weak如:__weak (typeof(self) weak self = self), 在mrc下用__block, 这样做是为了避免内存泄露和循环引用。

    3)在使用block前需要对block指针做判空处理,如果是MRC的编译环境下,要先release掉block对象。

    4)在MRC的编译环境下,block如果作为成员参数要copy一下将栈上的block拷贝到堆上(因为block默认是在栈上创建的,如果在定义block的作用于外部使用block那么需要使用copy将block放到堆上)//MRC下:_sucBlock = [callbackBlock copy]; 不copy block会在栈上被回收。

    5)将block赋值为空,是解掉循环引用的重要方法。

    6)还有一种改法,在block接口设计时,将可能需要的变量作为形参传到block中,从设计上解决循环引用的问题。

    7)在多线程环境下(block中的weakSelf有可能被析构的情况下),需要先将self转为strong指针,避免在运行到某个关键步骤时self对象被析构。

    相关文章

      网友评论

          本文标题:Block注意点如下

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