首页
沸点
课程
APP
AI用量
作品广场
专家标注
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
底层
订阅
冇人
更多收藏集
微信扫码分享
微信
新浪微博
QQ
19篇文章 · 0订阅
Thunk程序的实现原理以及在iOS中的应用
在说Thunk程序之前,我想先通过一个实际中排序的例子来引出本文所要介绍的Thunk技术的方方面面。 这个函数要求提供一个排序的数组指针base, 数组的元素个数nmemb, 数组中每个元素的尺寸size,以及一个排序的比较器函数compar四个参数。下面的例子演示了这个函数的…
轻松过面:一文全解iOS通知机制(经典收藏)
本文主要是针对iOS通知机制的全面解析,从接口到原理面面俱到。同时也解决了之前写的文章阿里、字节:一套高效的iOS面试题中关于通知的问题,相信看完此文再也不怕面试官问我任何通知相关问题了 这是个单例类,负责管理通知的创建和发送,属于最核心的类了。而NSNotificationC…
iOS逆向 HOOK原理之fishhook
...
iOS 如何抓取线程的“方法调用栈”?
本文将通过一个具体的 demo ,阐述如何进行抓栈操作。 在我们程序运行中,通常存在一个函数调用另一个函数的情况。 例如,在某个线程中,调用了 func A。在 func A 执行过程中,调用了 func B。 转移控制 :暂停 func A ,并开始执行 func B,并在 …
iOS汇编教程(六)CPU 指令重排与内存屏障
具有 ARM 体系结构的机器拥有相对较弱的内存模型,这类 CPU 在读写指令重排序方面具有相当大的自由度,为了保证特定的执行顺序来获得确定结果,开发者需要在代码中插入合适的内存屏障,以防止指令重排序影响代码逻辑[1]。 本文会介绍 CPU 指令重排的意义和副作用,并通过一个实验…
iOS 自动释放池autoreleasepool(二)
到此,第一条路就走完了。 感觉完全可以合起来啊- -,不知道苹果这么处理是为了什么。 在了解过push之后,我们可以很容易理解这个autorelease。看下面的代码跳转,
iOS探索 多线程之GCD底层分析
由于源码的篇幅较大、逻辑分支、宏定义较多,使得源码变得晦涩难懂,让开发者们望而却步。但如果带着疑问、有目的性的去看源码,就能减少难度,忽略无关的代码。首先提出本文分析的几个问题: 上层使用dispatch_queue_create,全局进行搜索。但是会出现搜索结果众多的情况(6…
iOS进阶之路 (三)OC对象的原理 - isa 结构 & 走位
学习之前,我们先补充下位域和联合体的知识。 1. 位域 所谓位域就是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作——这样就可以把几个不同的对象用一个字节的二进制位域来表示。位域是C语言一种数据结构。 有些信息在存储…
iOS底层原理:weak的实现原理
该方法的两个参数location和newObj。 从上面的代码可以看出objc_initWeak方法只是一个深层次函数调用的入口,在该方法内部调用了storeWeak 方法。下面我们来看下storeWeak 方法的实现代码。 如下是storeWeak方法的实现代码。 store…
iOS内存管理一:Tagged Pointer&引用计数
这里有点值得一提的是静态变量的作用域与对象、类、分类没关系,只与文件有关系。 从上面运行结果可以知道,在Person类、Person分类、Controller中针对静态变量age的操作,其值并不相互影响。 OC中对内存优化管理的方案有如下几种形式:Tagged Ponter、N…