編譯環境 MacOS Catalina 10.15.4 Xcode 12.2 Python 2.x brew install cmake ninja 編譯步驟 準備工作 新建...
二進制重排原理 啟動優化-概念與建議[https://www.jianshu.com/p/83dd525c9e82] 在上一篇啟動優化的概念中,我們理解了虛擬內存與物理內存,...
Swift 进阶之路 文章汇总[https://www.jianshu.com/p/5fbedf309237] 编译环境 MacOS Big Sur 11.0.1 Xcode...
基本概念 虛擬內存&物理內存 早期的數據訪問是直接通過物理地址訪問的,這種方式有以下兩種問題內存不夠用內存數據的安全問題 內存不夠用解決方案:虛擬內存 我們在進程和物理內存之...
LLVM(Low Level Virtual Machine)概述 LLVM是架構編譯器(compiler)的框架系統,以C++編寫而成,用於優化以任意程序語言編寫的程序的編...
前言 在上一篇中我們了解了dyld加載的流程,此篇我們將介紹dyld與objc的關聯。 dyld 加載流程[https://www.jianshu.com/p/c6c0e03...
前言 小測驗: 透過以下三種函數請問加載順序為何? +load方法,main()函數,C++方法 通過運行程序可以知道,打印順序為load → C++ → main函數 為了...
前言 在前兩篇節我們了解了快速方法查找如果找不到,則會進入慢速查找流程,其查找流程主要為在當前類的方法列表中查找,如果還是沒有找到,則去父類鏈的緩存和方法列表中查找。 快速查...
前言 在上一篇快速查找提到,如果快速查找無法找到相對應的方法,則會進入慢速查找流程,此篇重點在於慢速查找。 objc_msgSend流程分析(快速查找)[https://ww...
前言 在我們知道了cache寫入sel-imp流程後,接下來我們探討寫入之前的消息發送的流程 cache原理分析[https://www.jianshu.com/p/fb72...
前言: 在類的結構分析這篇分析了objc_class 結構體內部的isa和bit屬性,那麼這次就分析其中的cache屬性。 cache分析 部分源碼: 以上是cache_t ...
OC底層探索 對象的本質001-斷點分析的三種方法[https://www.jianshu.com/p/b2e62f7211b8]002-alloc&init原理[https...
数据结构与算法 01:基础名词解释 & 基本概念[https://www.jianshu.com/p/2cbce90a5bc1]数据结构与算法 02:特性 & 设计要求[ht...
問題一:類存在幾份 類的信息存在了類的isa的shiftcls區域中,而這樣的類信息只有一份,所以類對象只有一份 問題二:objc_object 與 對象的關係 所有的對象 ...
前言: 在了解了類與isa的關聯後,了解了isa是如何關聯到類以及isa內部存在的信息分佈,接下來我們來探討類的isa走位以及類的結構底層存在了什麼呢? isa與類的關係 類...
前言 我們知道類的本質是一個對象,對象的本質又是一個結構體,不過其中的原因以及類與對象之間的關聯,我們好好探究下。 Clang 介紹對象的本質前,由於要看編譯底層的C++文件...
iOS 底层原理 文章汇总[https://www.jianshu.com/p/412b20d9a0f6] 本文的主要目的是理解类与isa是如何关联的 在介绍正文之前,首先需...
獲取內存大小 第一種:sizeof The sizeof keyword gives the amount of storage, in bytes, associated ...