一、block的内存管理基本原理:
1.首先,普通的创建的block内存是分配在栈上的-用完自动回收;
2.block内部 引用 栈 上的变量 应该会copy一份,也就是说这个变量不再是原来的变量了;
3.block内部 引用 堆 上的变量 应该是retain了一次,指针计数+1;
4.block使用结束 内部变量 正常应该是会被自动释放,copy的内存释放,retain的计数-1
二、block在objc中使用的常见问题(具体代码自己找吧):
1.block超出定义域后无法使用:
原因:block定义栈上,出了作用域就被销毁了
解决办法:将block copy到堆中即可
2.block中使用了当前类中的变量造成内存泄漏
原因:block里面retain了一下self指针,self中又有 block指针,循环引用你懂的
解决办法:使用__block 重定义 self,直接操作内存,避免retain self