首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Block
订阅
lucdwy
更多收藏集
微信扫码分享
微信
新浪微博
QQ
12篇文章 · 0订阅
[iOS]Block系列探究四 - __block变量存储域
上一篇文章研究了一下Block的存储域,这一篇文章我们来研究下__block变量的存储域。 会报错,报错信息为__block attribute not allowed, only allowed on local variables。 为什么会报错呢?其实也比较容易理解,__…
[iOS]Block系列探究二 - 捕获变量
上一篇文章中我们得知了OC的block其实就是C的函数指针,这一篇文章我们来研究下block与局部变量的各种化学反应。 我们可以看到__main_block_impl_0结构体多了两个成员变量count和static_count。 在声明block时,count的值就已经被保存…
iOS底层原理总结 - 探寻block的本质(二)
上一篇文章iOS底层原理总结 - 探寻block的本质(一)中已经介绍过block的底层本质实现以及了解了变量的捕获,本文继续探寻block的本质。 大括号执行完毕之后,person依然不会被释放。上一篇文章提到过,person为aotu变量,传入的block的变量同样为per…
iOS: Block的循环引用
NSGlobalBlock:最初创建一个block的时候,他是存在于5大内存区(栈区,堆区,静态区(全局区),常量区,代码区)的全局区,当我们引入外部变量,block会自动捕获变量,当前这个变量a由栈区捕获到堆区,因为a和block必须在同一个内存空间才可以进行相应的操作,所以…
iOS 开发:『Blocks』详尽总结 (一)基本使用
1. 什么是 Blocks ? 一句话总结:Blocks 是带有 局部变量 的 匿名函数(不带名称的函数)。
理解 Block 实现原理
Block 在 iOS 日常开发中会频繁使用到,使用起来也十分方便,而它的实现原理和机制很多小伙伴却一无所知。 Block 是一种带有自动变量值的匿名函数,它能够自动捕获函数内使用到的参数,本文将从细节分析 Block 的实现原理。 在探寻 Block 实现原理中,命令行工具C…
弄透Block
因为在MRC情况下如果Block属性不使用copy修饰,在使用中会出现崩溃,在ARC情况下,Block属性使用strong修饰会被默认进行copy,所以ARC情况下,Block属性可以使用strong或copy修饰,不然会出现崩溃。 NSGlobalBlock 是位于全局区的b…
iOS中Block实现原理的全面分析
__blockTest_block_impl_0是Block的C++实现,是一个结构体,从命名可以看出表示blockTest中的第一个(0)Block。通常包含两个成员变量__block_impl impl,__blockTest_block_desc_0* Desc和一个构造…
iOS底层原理总结 - 探寻block的本质(一)
block本质上也是一个oc对象,他内部也有一个isa指针。block是封装了函数调用以及函数调用环境的OC对象。 上图中将c++中block的声明和定义分别与oc代码中相对应显示。将c++中block的声明和调用分别取出来查看其内部实现。 上述定义代码中,可以发现,block…
[iOS]Block系列探究三 - Block存储域
程序区域(.text区)- 存放函数体的二进制代码。 数据区域(.data区)- 主要包括静态全局区(全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束后有系统释放。)和常量区(常量字符…