首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
JackMayx
掘友等级
Swift/Objective-C/Java/Python/Vue
不想卷了,卷不动了
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
赞
82
文章 79
沸点 3
赞
82
返回
|
搜索文章
文章
热门
最新
iOS 国际化报错read failed: Couldn't parse property list because the input data was in
如果在国际化中遇到 read failed: Couldn't parse property list because the input data was in an invalid format
Mac OS Java开发环境配置(初学者)
1、在安装JDK之前,先查看下自己电脑是否已经安装了JDK。 打开终端,输入java -version并回车。 如下图所示表示已经安装了Java环境,JDK 8版本。 如果这个版本是你需要的版本,可直
Swift函数派发机制
在探究Swift函数派发机制之前,我们应该先了解一下函数派发的基本知识。函数派发就是程序判断使用哪种途径去调用一个函数的机制,也就是CPU在内存中找到该函数地址并调用的过程。每次函数被调用时都会被触发, 但你又不会太留意的一个东西. 了解函数派发机制对于写出高性能的代码来说很有…
OC底层-Block本质(八、循环引用)
循环引用是导致内存泄漏的主要问题。 person没有被释放,产生了循环引用。 上图中可以发现,Person对象和block对象相互之间产生了强引用,导致双方都不会被释放,进而造成内存泄漏。 首先为了能随时执行block,我们肯定希望person对block对强引用,而block…
OC底层-Block本质(七、内存管理)
前一篇文章中提到当block中捕获对象类型的变量时,block中的__main_block_desc_0结构体内部会自动添加copy和dispose函数对捕获的变量进行内存管理。 那么同样的当block内部捕获__block修饰的对象类型的变量时,__Block_byref_p…
OC底层-Block本质(六、block内修改变量的值)
默认情况下block不能修改外部的局部变量。通过之前对源码的分析可以知道,因为变量的作用于都不在同一个函数中,当然不能去想当然的做修改了,那到底怎么去修改呢,下面会详细说道。 age是在main函数内部声明的,说明age的内存存在于main函数的栈空间内部,但是block内部的…
OC底层-Block本质(五、捕获的变量何时销毁)
大括号执行完毕之后,person不会被释放。,person为auto变量,传入的block的变量同样为person,即block有一个强引用引用person,所以block不被销毁的话,person也不会销毁。 将上述代码转移到MRC环境下,在MRC环境下即使block还在,p…
OC底层-Block本质(四、copy和strong)
在ARC环境下,编译器会根据情况自动将栈上的block进行一次copy操作,将block复制到堆上。 什么情况下ARC会自动将block进行一次copy操作?以下代码都在ARC环境下执行。 如果在block中访问了auto变量时,block的类型为__NSStackBlock_…
OC底层-Block本质(三、类型)
block对象是什么类型的,通过源码可以知道block中的isa指针指向的是_NSConcreteStackBlock类对象地址。那么block是否就是_NSConcreteStackBlock类型的呢?我们继续往下看 从上述打印内容可以看出block最终都是继承自NSBloc…
OC底层-Block本质(二、变量捕获)
为了保证block内部能够正常访问外部的变量,block有一个变量捕获机制。 在上一篇代码中我们已经了解过block对age变量的捕获。 auto自动变量,离开作用域就销毁,局部变量前面自动添加auto关键字。自动变量会捕获到block内部,也就是说block内部会专门新增加一…
下一页
个人成就
文章被点赞
63
文章被阅读
46,649
掘力值
999
关注了
69
关注者
33
收藏集
13
关注标签
28
加入于
2016-09-14