首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
iOS 原理探究
订阅
榛子田
更多收藏集
微信扫码分享
微信
新浪微博
QQ
25篇文章 · 0订阅
NSDictionary底层实现原理
NSDictionary使用NSMapTable实现,NSMapTable同样是一个key-value的容器。 上述结构体描述了遍历一个NSMapTable时的一个指针对象,其中包含table对象自身的指针,计数值,和节点指针。 上述结构体中存放的是几个函数指针,用于计算key…
一文读懂iOS线程调用栈原理
还要一个重要的用途就是应用性能优化中的“卡顿检测”,需要获取主线程的调用栈,来检测具体的函数调用过程分析耗时来优化性能。 卡顿检测获取线程堆栈信息,如微信开源性能探测工具Matrix,检测包括崩溃、卡顿及爆内存,目前包含两个插件:WCCrashBlockMonitorPlugi…
探究iOS线程调用栈及符号化
调用栈,也称为执行栈、控制栈、运行时栈与机器栈,是计算机科学中存储运行子程序的重要的数据结构,主要存放返回地址、本地变量、参数及环境传递,用于跟踪每个活动的子例程在完成执行后应该返回控制的点。 一个线程的调用栈如上图所示,它分为若干栈帧(frame),每个栈帧对应一个函数调用,…
一文读懂iOS图像显示原理与优化
图形渲染主要是利用GPU并行运算能力,实现图形渲染并显示在屏幕的每一个像素上。渲染过程最常用的就是光栅化,即将数据转化为可见像素的过程。GPU及相关驱动实现了图形处理的OpenGL和DirectX模型,其实OpenGL不是函数API而是一种标准,制定了相关函数API及其实现的功…
谈谈程序启动那点事
“函数可重入”,表示函数没有执行完成,由于外部因素或内部因素,由一次进入该函数执行。一个函数要被冲入,只有两种情况: 上述情况会导致变量x的值不相同。 Linux中使用clone(带有CLONE_VM参数)产生的用户态线程与内核态线程是一一对应得。 使用ld命令工具将不同的目标…
iOS NSNotification使用及原理实现
NSPostNow:在合并通知完成之后立即发出通知。 即是NSNotification的发送与接收处理都是在同一个线程中,对于block形式则是接收处理在指定的队列中处理,上面已说明这点,这里重点说明下如何接收处理在其他线程处理。 其实就是一个hash表结构,既可以以数组的形式…
Unix进程间通信详解
... Core Foundation和Foundation为Mach端口提供了高级API。在内核基础上封装的CFMachPort / NSMachPort可以用做runloop源,尽管CFMachPort / NSMachPort有利于的是两个不同端口之间的通讯同步,具体见进…
iOS dispatch浅析
dispatch_object_t是个union的联合体,可以用dispatch_object_t代表这个联合体里的所有数据结构。 dispatch_queue_s是队列的结构体,在它的 do_vtable 中有很多函数指针,对应队列的一些操作方法,对应有一些宏可以调用队列中的…
iOS runloop由浅入深
Event Loop事件循环机制,如javascript的事件循环,以及依赖其的nodejs都是采用的异步事件循环机制。 内核中由于不同架构的限制,很多时候会用到空宏,。在编译的时候,这些空宏会给出warning,为了避免这样的warning,我们可以使用do{...}whil…
iOS runtime详解
另外,objc源码是开源的,且几乎全部使用C语言实现(有些使用了汇编实现),可以从苹果开源官方网站获取此代码。 objc 从三种不同的层级上与 Runtime 系统进行交互,分别是通过 Objective-C 源代码,通过 Foundation 框架的NSObject类定义的方…