首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
block
订阅
岩尘雨
更多收藏集
微信扫码分享
微信
新浪微博
QQ
4篇文章 · 0订阅
探秘Block(三):weak和strong
我们知道,在ARC中,除了全局block,block都是在栈上进行创建的。使用的时候,会自动将它复制到堆中。中间会经历objc_retainBlock -> _Block_copy -> _Block_copy_internal方法链。换过来说,我们使用的每个拦截了自动变量的b…
block(二):block的copy和release
现在来看一下block的copy和release过程。 这部分代码在Block.h中。 我们知道,在block创建的时候,一般来说,都是在栈上的。 但是我们知道,栈是有系统自动管理的,其所属的变量作用域结束,block就会被废弃。那该如何解决这个问题呢? 答案就是讲block从…
探秘Block(一):block的本质
最简单。 升级版。 里面的invoke就是指向具体实现的函数指针,当block被调用的时候,程序最终会跳转到这个函数指针指向的代码区。 而 Block_descriptor里面最重要的就是 copy函数和 dispose函数,从命名上可以推断出,copy函数是用来捕获变量并持有…
探秘Block(四):修改Block的实现
这里将通过几道面试题来扩展知识。 这几道题有几个取自sunnyxx。 block在捕获普通的局部变量时是捕获的a的值,后面无论怎么修改a的值都不会影响block之前捕获到的值,所以a的值不变。 block在捕获静态局部变量时是捕获的b的地址,block里面是通过地址找到b并获取…