首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

有关block的理解

2024-12-15 来源:化拓教育网

首先是特点:
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。

显示全文