首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
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…