面试整理七(Block)

block的原理是怎样的,本质是什么?

block本质也是个OC对象,它内部也有个ISA指针
block是封装了函数调用及函数调用环境的OC对象
block的底层结构如下图所示:


block的底层结构

block变量捕获

block变量捕获.png

block的类型

block类型.png

__block的作用,有什么使用注意点?

__block.png
截屏2022-04-10 下午12.09.43.png

block属性修饰词为什么是copy,使用block要注意哪些?

block如果不进行copy操作,就不会在堆上。我们没法控制他的生命周期。
使用注意循环引用问题。 解决循环引用可以用 __weak 或者 __unsafe_unretained 或者__block。
使用__block 要注意一定要调用block,并且在block内部将对象置为nil。

block修饰NSMutableArray时,需不需要添加__block?

不需要,因为只是对数组内容进行操作,并不是修改他的内存地址。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容