有关block的理解

首先是特点:
1.block是C语言的。
2.block是一种数据类型,可以当作参数传递,也可以当作返回值。
3.是预先准备好的代码,在需要的时候执行。
定义:
返回类型(^blockName)(参数列表) = ^返回类型(参数列表){///代码实现}
void(^blockName)(参数列表) = ^(参数列表){///代码实现}
void(^blockName)() = ^ {///代码实现}
速记代码块: inlineBlock
如果引用外部变量:
在定义block时,如果使用了外部变量,block内部会默认对外部变量做一次copy
默认情况下,不允许在block内部修改外部变量的值
在外部变量声明时,使用__block修饰符,则可以在block内部修改外部变量的值
数组的遍历:
enumerateObjectsUsingBlock:
所有的参数都已经准备到位,可以直接使用
效率比for高,官方推荐使用
数组的排序:
sortedArrayUsingComparator:
升序/降序/乱序
block的方法重构注意:
相同的代码只出现一次。
当方法需要调整时,只需要调整一个地方即可。
方法重构一定要小步走。
每一次修改都必须测试,因为任何修改都有可能出现错误。

使用block会造成self循环引用。
使用block需要使用弱指针,否则会出现循环引用。
在MRC中注意 Block_copy&Block_release。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《Objective-C高级编程》这本书就讲了三个东西:自动引用计数、block、GCD,偏向于从原理上对这些内容...
    WeiHing阅读 9,928评论 10 69
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,786评论 18 399
  • 如果子圣能预料今晚所发生的一切,或许他根本不会选择前往。 从大学毕业到现在,七八年的时光就这般毫无预料地从身旁悄悄...
    雨夜寒灯落阅读 461评论 1 2
  • 标题党’ Click Bait 之前我想通过自己过硬的英文实力翻译这个词,发现东拼西凑不是一般的生硬,什么titl...
    龟龟祺要踩扁Seoul阅读 6,585评论 0 2