block , delegate

来源:互联网 发布:mysql怎么导入mdf文件 编辑:程序博客网 时间:2024/04/24 00:37
BLOCK:(C语言)简介,封闭,引用外部变量回调
1,一段代码块
2,数据类型 :_block类型
3,与函数相似,有参数和返回值

MAC:全局,栈,堆
ARC :全局,堆

注意:block用copy是因为,在copy的时候block由栈区转移到了堆区,使得变量不会被马上释放,继续保留备份。
1,引用外部变量copy备份,是外部变量定义时的值,只读;
2,static修饰的局部变量是静态存储的,内存地址固定,block copy的总是最新的值;
3,_block修饰的局部变量,可修改;

4,循环引用问题:
block中遇到self是直接用self会发生循环引用,需要用weak修饰self;
VC持有view,
_weak  _typeof(self) self = weakSelf;
_weak vc *self = weakSelf;


delegate:

MRC: -retain  -assign
ARC: -strong  -weak
0 0