iOS-底层原理 15:dyld加载流程
本文的目的主要是分析dyld的加载流程,了解在main函数之前,底层还做了什么引子创建一个project,在ViewController中重写了load方法,在main中加了一个C++方法,即kcFUnc,请问它们的打印先后顺序是什么?运行程序,查看 load、kcFunc、main的打印顺序,下面是打印结果,通过结果可以看出其顺序是 load --> C++方法 --> main为....
iOS-底层原理 14:消息流程分析之 动态方法决议 & 消息转发
引子在前面两篇文章iOS-底层原理 12:objc_msgSend流程分析之快速查找和iOS-底层原理 13:objc_msgSend流程分析之慢速查找中,分别分析了objc_msgSend的快速查找和慢速查找,在这两种都没找到方法实现的情况下,苹果给了两个建议动态方法决议:慢速查找流程未找到后,会执行一次动态方法决议消息转发:如果动态方法决议仍然没有找到实现,则进行消息转发如果这两个建议都没有....
iOS-底层原理 13:消息流程分析之慢速查找
在上一篇iOS-底层原理 12:objc_msgSend流程分析之快速查找文章中,我们分析了快速查找流程,如果快速查不到,则需要进入慢速查找流程,以下是慢速查找的分析过程objc_msgSend 慢速查找流程分析慢速查找-汇编部分在快速查找流程中,如果没有找到方法实现,无论是走到CheckMiss还是JumpMiss,最终都会走到__objc_msgSend_uncached汇编函数在objc-....
iOS-底层原理 12:消息流程分析之快速查找
本文的主要目的是理解objc_msgSend的方法查找流程在上一篇文章iOS-底层原理 11:objc_class 中 cache 原理分析中,分析了cache的写入流程,在写入流程之前,还有一个cache读取流程,即objc_msgSend 和 cache_getImp在分析之前,首先了解什么是RuntimeRuntime 介绍runtime称为运行时,它区别于编译时运行时 是代码跑起来,被装....
iOS-底层原理 10:strong©&weak底层分析 以及 方法签名和attribute简写含义
在clang编译的cpp文件中可以发现 strong & copy & weak 修饰的属性在编译的底层代码中是有区别的strong & copy & weak 底层分析在LGPerson中我们定义了两个两个属性,分别用copy和strong修饰用clang将main.m文件编译成main.cpp,然后发现copy 和strong修饰的属性的set方法是有区别的这....
iOS-底层原理 11:objc_class 中 cache 原理分析
本文的主要目的是理解cache_t以及sel-imp的缓存原理整体分析在之前的iOS-底层原理 07:isa与类关联的原理和iOS-底层原理 08:类 & 类结构分析中,分析了objc_class中isa和bits,这次主要是分析objc_calss中的cache属性cache中存储的是什么?首先,我们需要知道cache中存储的到底是什么?查看cache_t的源码,发现分成了3个架构的处....
iOS-底层原理 09:类 & isa 经典面试题分析
本文的面试题主要涉及isa走位 & 继承关系 & 类结构 相关的面试题以及针对面试题的分析【面试题】类存在几份?由于类的信息在内存中永远只存在一份,所以 类对象只有一份【百度面试题】objc_object 与 对象的关系所有的对象 都是以 objc_object为模板继承过来的所有的对象 是 来自 NSObject(OC) ,但是真正到底层的 是一个objc_object(C/C....
iOS-底层原理 08:类 & 类结构分析
本文的主要目的是分析 类 & 类的结构,整篇都是围绕一个类展开的一些探索类 的分析类的分析 主要是分析 isa的走向 以及 继承关系准备工作定义两个类继承自NSObject的类CJLPerson,@interface CJLPerson : NSObject { NSString *hobby; } @property (nonatomic, copy) NSString *cj...
iOS-底层原理 07:isa与类关联的原理
本文的主要目的是理解类与isa是如何关联的在介绍正文之前,首先需要理解一个概念:OC对象的本质是什么?OC对象本质在探索oc对象本质前,先了解一个编译器:clangClangclang是一个由Apple主导编写,基于LLVM的C/C++/OC的编译器主要是用于底层编译,将一些文件``输出成c++文件,例如main.m 输出成main.cpp,其目的是为了更好的观察底层的一些结构 及 实现的逻辑,....
iOS-底层原理 06:malloc 源码分析 思路
在iOS-底层原理 02:alloc & init & new 源码分析文章中,alloc有3个核心操作,其中一个就是calloc,即申请内存,这就是今天需要探索的内容,其实探索的本质也是为了验证 ios中对象中实际的对齐方式是8字节对齐objc4中分析calloc 源码首先从alloc进入objc的源码,找到obj = (id)calloc(1, size);操作,涉及的方法顺....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
mPaaS 移动开发平台
mPaaS 源于蚂蚁集团金融科技,为 App 开发、测试、运营及运维提供云到端的一站式解决方案,致力于提供高效、灵活、稳定的移动研发、管理平台。 官网地址:https://www.aliyun.com/product/mobilepaas/mpaas
+关注