iOS 如何正确使用block才不会造成内存泄漏

 我来答
广州启汇营销策划有限公司
2017-02-15 · 专业app开发、互联网营销策划
广州启汇营销策划有限公司
广州启汇营销策划有限公司是国内领先的移动互联网技术解决方案服务商。拥有子品牌:启汇网络和启汇营销。提供APP、移动商城、Web等开发服务。专注品牌建设、全媒介投放、内容运营、活动策划等市场服务。
向TA提问
展开全部
  • Block定义

    Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事。


  • 作用

    Block可以访问函数以外、词法作用域以内的外部变量的值。换句话说,Block不仅 实现函数的功能,还能携带函数的执行环境。


  • Block的类型

  1. NSGlobalBlock:类似函数,位于text段;

  2. NSStackBlock:位于栈内存,函数返回后Block将无效;

  3. NSMallocBlock:位于堆内存;


  • 内存泄漏问题

    block 里面引用 self ,而self又强指针指着block。使self 不能被销毁。

    解决方法:
    __weak typeof(self) selfVc = self;,定义一个self的替身并用ruo指针引用着。

需要注意的是由于Objective-C在iOS中不支持GC机制,使用Block必须自己管理内存,而内存管理正是使用Block坑最多的地方,错误的内存管理 要么导致return cycle内存泄漏要么内存被提前释放导致crash。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式