首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS探索
我是好宝宝
创建于2021-05-11
订阅专栏
从iOS底层代码,再由底层原理推演出面试题,最后再引出项目实战中的优化思路
等 36 人订阅
共22篇文章
创建于2021-05-11
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
我是好宝宝
2年前
iOS
iOS探索 内存管理篇
一个优秀的app必然是对内存"精打细算"的,本文就来探索一下内存管理中的一些门道。如果你看到了这篇文章,请仔细看下去,尤其是NSTimer部分的内容介绍了NSTimer和Block中的循环引用存在的差异 1. 五大区 2. 内存布局面试题 1. taggedPointer 最后…
4882
49
2
我是好宝宝
2年前
iOS
iOS探索 全方位解读Block
相信大家对本文的主角block都有一定的了解,日常开发中也经常能看到它的身影。本文会从block概念、blcok循环引用、block底层三方面进行讲解 表面看上去还是一个“引用圈”,但是weakself -> self这一层是弱引用——引用计数不处理,使用weak表管理。所以此…
5670
36
10
我是好宝宝
3年前
iOS
iOS探索 细数iOS中的那些锁
当一个线程访问数据的时候,其他的线程不能对其进行访问,直到该线程访问完毕。简单来讲就是在同一时刻,对同一个数据操作的线程只有一个。而线程不安全,则是在同一时刻可以有多个线程对该数据进行访问,从而得不到预期的结果 锁作为一种非强制的机制,被用来保证线程安全。每一个线程在访问数据或…
1.1w
114
24
我是好宝宝
3年前
iOS
iOS探索 多线程面试题分析
... 多读单写功能指的是:可以多个读者同时读取数据,而在读的时候,不能写入数据;在写的过程中不能有其他写者去写。即读者之间是并发的,写者与其他写者、读者之间是互斥的 多线程在日常开发中占有不少份量,同时面试中也是必问模块。但只有基础知识是一成不变的,综合运用题稍有改动就是另外…
9682
59
11
我是好宝宝
3年前
iOS
iOS探索 多线程之NSOperation
与GCD一样,NSOperation也是我们日常开发中经常用到的多线程技术。本文将会介绍NSOperation的基本使用、添加依赖、自定义
3441
14
3
我是好宝宝
3年前
iOS
iOS探索 多线程之GCD底层分析
由于源码的篇幅较大、逻辑分支、宏定义较多,使得源码变得晦涩难懂,让开发者们望而却步。但如果带着疑问、有目的性的去看源码,就能减少难度,忽略无关的代码。首先提出本文分析的几个问题: 上层使用dispatch_queue_create,全局进行搜索。但是会出现搜索结果众多的情况(6…
5350
25
1
我是好宝宝
3年前
iOS
iOS探索 多线程之GCD应用
此时GCD就提供了两个API——dispatch_barrier_sync和dispatch_barrier_async,使用这两个API就能将多个任务进行分组——等栅栏前追加到队列中的任务执行完毕后,再将栅栏后的任务追加到队列中。简而言之,就是先执行栅栏前任务,再执行栅栏任务…
6153
47
10
我是好宝宝
3年前
iOS
iOS探索 多线程原理
进程切换时,消耗的资源大、效率高。所以设计到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程而不能用进程 执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序…
4798
20
评论
我是好宝宝
3年前
iOS
iOS探索 KVO原理及自定义
KVO(Key-Value Observing)是苹果提供的一套事件通知机制,这种机制允许将其他对象的特定属性的更改通知给对象。iOS开发者可以使用KVO 来检测对象属性的变化、快速做出响应,这能够为我们在开发强交互、响应式应用以及实现视图和模型的双向绑定时提供大量的帮助。 在…
3361
10
2
我是好宝宝
3年前
iOS
iOS探索 KVC原理及自定义
集合操作符用得少之又少。下面举个🌰 调用setValue:forUndefinedKey:。默认情况下会引发一个异常,但是继承于NSObject的子类可以重写该方法就可以避免崩溃并做出相应措施 调用valueForUndefinedKey:。默认情况下会引发一个异常,但是继承…
4313
22
6
我是好宝宝
3年前
iOS
iOS探索 runtime面试题分析
里面虽然可以添加属性变量,但是这些properties并不会自动生成Ivar,也就是不会有 @synthesize的作用,dyld加载期间,这些分类会被加载并patch到相应的类中。这是一个动态过程,Ivar不能动态添加 然而程序还是无情的崩了... 其实在iOS中NSNumb…
1.1w
94
9
我是好宝宝
3年前
iOS
iOS探索 isa面试题分析
面试题是面试官用知识点变着法玩你的一种手段,同时也能表现出你掌握知识的熟练度。只有在平时多练习多研究,才能在面试的时候给面试官留下一个好的印象
4995
23
9
我是好宝宝
3年前
iOS
iOS探索 分类、类拓展的加载过程
④重新跑项目,在第一个断点处打印ro,分类方法已经存在了...
5625
29
13
我是好宝宝
3年前
iOS
iOS探索 类的加载过程
Q1:实现了+load的子类ClassA继承于没有+load的父类ClassB,ClassA属于非懒加载类,在_read_images时加载。那么ClassB是什么呢?何时加载?
5301
11
1
我是好宝宝
3年前
iOS
iOS探索 浅尝辄止dyld加载流程
链接:将目标文件链接成可执行文件。这一过程中,链接器将不同的目标文件链接起来,因为不同的目标文件之间可能有相互引用的变量或调用的函数,如我们经常调用Foundation框架和UIKit 框架中的方法和变量,但是这些框架跟我们的代码并不在一个目标文件中,这就需要链接器将它们与我们…
6772
34
6
我是好宝宝
3年前
iOS
iOS探索 动态方法解析和消息转发机制
使用anInvocation将消息发送到该对象。anInvocation将保存结果,运行时系统将提取结果并将其传递给原始发送者
4313
14
10
我是好宝宝
3年前
iOS
iOS探索 方法的本质和消息查找流程
①#CACHE是个宏定义表示16个字节,[x16, #CACHE]表示类对象内存地址偏移16字节得到cache。cache一分为二——8字节的buckets存放在p10,两个4字节的occupied和mask存放在p11 防止不断循环的过程中多线程并发,正好缓存更新了。如果bu…
5171
21
10
我是好宝宝
3年前
iOS
iOS探索 cache_t分析
关于cache_t的内容虽然不多但还是蛮绕的,多读读源码会有更深的理解。下篇文章讲objc_msgsend,作为cache_fill_nolock前置方法,一定程序上会对cache_t的理解有所帮助
3491
18
17
我是好宝宝
3年前
iOS
iOS探索 类的结构分析
天呐!怎么只有一个nationality了?难道我FXPerson类只配拥有“国籍”不配拥有“姓名”?让我静静... 既然此路不通,那么换条路走走(内心很不情愿) 但是FXPerson的walk类方法又被吃了... 虽然一直碰壁,但是本文最后还是找到了想要的答案,有的时候你离成…
2515
13
4
我是好宝宝
3年前
iOS
iOS探索 isa初始化&指向分析
有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1两种状态,用1位二进位即可。为了节省存储空间并使处理简便,C语言提供了一种数据结构,称为位域或位段 所谓位域就是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的…
4652
10
3
下一页