首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
ios原理
订阅
13811950609
更多收藏集
微信扫码分享
微信
新浪微博
QQ
21篇文章 · 0订阅
iOS block调用为啥要判空
在iOS中,使用nil指针调用OC的方法是安全的,但是使用nil指针调用block却会产生崩溃。本篇文章,将会从汇编的角度解释该现象。
iOS NSProxy详解
一 NSProxy介绍 众所周知,OC是单继承的语言,但是基于运行时的机制,却有一种方法让它来实现一下"伪多继承",就是利用NSProxy这个类。通过代码发现NSProxy是一个实现了NSObject
OC基础知识点之-内存管理初识(内存分区)
来讲一下iOS的内存。我们知道iOS内存主要有一下五大区域,分别是栈区、堆区、全局区、常量区、代码区。其中全局区和常量区有叫数据段(_DATA区)。下面我们分别来看下每个区的作用 全局区是又叫BSS段,是编译期分配的内存空间,在iOS一般是以0x1开头,在程序运行的过程中该数据…
iOS底层-cache_t流程分析
本文旨在通过源码分析cache_t相关,如缓存策略,动态扩容等,了解方法查找的前置流程。因其与objc_msgSend流程有密切联系,而发送消息又是iOS方法的本质,故了解cache_t是有必要的。 根据这个结果,会发现前面三个cls还有一点规律可循,occupied每次+1,…
iOS的OC的方法的决议与消息转发原理
OC的方法的查找是通过消息的发送来查找函数的IMP,首先通过objc_msgSend来进行快速查找(cache_t),如果快速找不到,就需要进行方法的慢速查找,具体可以了解iOS的OC的方法的查找原理这篇文章。但是,如果通过快速和慢速的查找都找不到的话,就会直接报错。为了接下来…
iOS中符号的那些事儿
本文介绍了iOS开发中常见的符号及堆栈符号化等内容。 对于dSYM,iOS开发应该都比较熟悉了。 编译器在编译过程(即把源代码转换成机器码)中,会生成一份对应的Debug符号表。Debug符号表是一个映射表,它把每一个编译好的二进制中的机器指令映射到生成它们的每一行源代码中。这…
iOS探索 多线程之GCD应用
此时GCD就提供了两个API——dispatch_barrier_sync和dispatch_barrier_async,使用这两个API就能将多个任务进行分组——等栅栏前追加到队列中的任务执行完毕后,再将栅栏后的任务追加到队列中。简而言之,就是先执行栅栏前任务,再执行栅栏任务…
笔记-集合NSSet、字典NSDictionary的底层实现原理
Foundation框架下提供了很多高级数据结构,很多都是和Core Foundation下的相对应,例如NSSet就是和_CFSet相对应,NSDictionary就是和_CFDictionary相对应。源码 这里说的hash并不是之前说的hash表,而是一个方法。为什么要有…
笔记-数据结构之 Hash(OC的粗略实现)
哈希表(Hash table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表 白话一点的说就是通过把K…
iOS的OC的方法缓存的源码分析
在日常开发中,我们调用方法的时候有没有想过一个问题,在我们频繁地调用方法,为了高效苹果会不会对使用过的方法做缓存起来?如果有做缓存的话,具体是怎样做的呢?为了了解这块的内容,本篇文章就对cache_t做源码分析。 从源码可以知道,通过将方法编号SEL和函数地址IMP缓存在buc…