block 是一种数据类型: 封装了一段代码 (简单的可以认为)
block 在iOS 中的使用场景
1 多线程
2 网络请求的回调
3 动画
4 遍历集合 (数组,字典)
———————————————————————————————————————————————————————
当 block 用copy定义的时候, 会从栈内存移到堆内存里面, 会对对象形成循环引用, 当P消失时, 对象无法释放
只要Block 没有copy 就一直在栈内存中的(栈里面的内容会随着大括号的消失时而消失)
ARC中block的循环引用
MRC中的block的循环引用
用 _ _block 定义以后, 传入的是地址 @age, 所以打印的是 20