首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS底层探究
sj
创建于2022-01-18
订阅专栏
iOS底层及源码分析
等 5 人订阅
共15篇文章
创建于2022-01-18
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
多线程(二)
我们都知道,程序启动就会创建一个主线程来执行程序,我们先看一下默认开启的主线程的相关信息。在main函数打一个断点,看函数调用栈: 可以看到当前线程
多线程(一)
线程与进程 线程是进程的基本执行单元,一个进程所有任务都在线程中执行 进程想要执行任务,必须得有线程,进程至少要有一条线程 程序启动会默认开启一条线程,这条线程被称为主线程或UI线程 进程实质在系统中
应用程序加载:从dyld到objc
想要了解应用程序加载,我们需要了解下面几个问题: 我们写的代码是如何加载到内存的? 我们使用的动静态库是如何加载到内存的? objc是如何启动的?
iOS消息转发
我们已经研究了objc_msgSend从汇编快速查找缓存流程,慢速查找流程,动态方法决议流程,如果这几个流程下来都没找到合适的执行方法,接下来就会走到消息转发流程。
方法查找和动态决议
我们在objc_msgSend汇编流程分析了缓存的查找流程,缓存找不到时,会执行到C++的lookupImpOrForward方法进行方法查找,现在来分析方法查找流程。
objc_msgSend汇编流程深入分析
要研究objc_msgSend实现原理,我们就需要在源码中找实现,全局搜索objc_msgSend。因为有好多架构实现,而真机架构arm64,所以就看objc-msg-arm64.s文件里面的实现即可
iOS方法的本质
编译时和运行时 编译时:顾名思义就是正在编译的时候 . 那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码 .(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言.)
cache_t底层分析
cache_t 结构分析 类的本质我们已经分析完了,里面有isa、superclass、cache、bits。 今天对cache进行研究。
iOS属性、方法获取的深入理解
属性的深入理解 要研究成员变量与属性关系,最简单方法就是利用clang生成C++文件,看C++代码如何实现的。
iOS类的本质
首先,我们看下几个类型:NSObject、Class、objc_object、objc_class、id的联系与区别。 NSObject:OC中的基类,绝大多数类都继承NSObject
联合体&位域
首先我们创建一个类,里面有三个BOOL类型属性 创建一个对象,打印内存大小 打印出来占16字节(isa:8,tall:1,rich:1,handsome:1;16字节对齐)。
iOS对象的本质
clang Clang是一个C语言、C++、Objective-C语言的轻量级编译器。源代码发布于BSD协议下。
OC对象内存占用及优化
结构体内存对齐原理 前言:我们都知道,在iOS开发中,我们写的oc代码,底层都是用c++来实现的,而oc对象本质就是结构体指针,那么结构体占用内存的计算方法是什么呢,有没有什么规则呢,下面我们就来研究
alloc探究底层探究
苹果觉得`alloc`方法非常重要,所有对象要使用都要创建,所以在这个非常重要的方法执行的时候插了个桩,做了一些特殊处理,这些特殊处理,处理完后又发了objc_msgSend会走alloc流程
编译器优化
编译器优化优化的是什么呢,优化的是底层代码执行逻辑,使项目执行更加高效。汇编是最接近底层的代码,所以我们从汇编来看编译器优化是如何优化的。