iOS-底层原理 33:内存管理(二)强引用分析
本文主要是通过定时器来梳理强引用的几种解决方案强应用(强持有)假设此时有两个界面A、B,从A push 到B界面,在B界面中有如下定时器代码。当从B pop回到A界面[图片上传中...(E70D3F5D-8815-4138-BFDD-017B1BFCE0E7.png-6861f8-1609331145410-0)]时,发现定时器没有停止,其方法仍然在执行,为什么?self.timer = [NS....
iOS-底层原理 33:内存管理(一)TaggedPointer/retain/release/dealloc/retainCount 底层分析
本文主要是分析内存管理中的内存管理方案,以及retain、retainCount、release、dealloc的底层源码分析ARC & MRCiOS中的内存管理方案,大致可以分为两类:MRC(手动内存管理)和ARC(自动内存管理)MRC在MRC时代,系统是通过对象的引用计数来判断一个是否销毁,有以下规则对象被创建时引用计数都为1当对象被其他指针引用时,需要手动调用[objc retai....
iOS-底层原理 32:启动优化(三)二进制重排
前提,在之前的两篇文章中,大致介绍了一些基本概念以及启动优化的思路,下面来着重介绍一个pre-main阶段的优化方案,即二进制重排,这个方案最开始是由于抖音的这篇文章抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15%火起来的。二进制重排原理在虚拟内存部分,我们知道,当进程访问一个虚拟内存page,而对应的物理内存不存在时,会触发缺页中断(Page Fault),因此阻塞进程。....
iOS-底层原理 32:启动优化(二)优化建议
启动启动的过程一般是指从用户点击app图标开始到AppDelegate 的didFinishLaunching方法执行完成为止,其中,启动也分为冷启动和热启动冷启动:内存中不包含app相关数据的启动,一般我们可以通过重启手机来实现冷启动热启动:是指杀掉app进程后,数据仍然存在时的启动而我们这里所说的启动优化,一般是指冷启动情况下的,这种情况下的启动主要分为两部分:T1 :pre-main阶段,....
iOS-底层原理 32:启动优化(一)基本概念
虚拟内存 & 物理内存早期的数据访问是直接通过物理地址访问的,这种方式有以下两个问题:1、内存不够用2、内存数据的安全问题内存不够用的方案:虚拟内存针对问题1,我们在进程和物理内存之间增加一个中间层,这个中间层就是所谓的虚拟内存,主要用于解决当多个进程同时存在时,对物理内存的管理。提高了CPU的利用率,使多个进程可以同时、按需加载。所以虚拟内存其本质就是一张虚拟地址和物理地址对应关系的映....
iOS-底层原理 31:LLVM编译流程 & Clang插件开发
本文主要是理解LLVM的编译流程以及clang插件的开发LLVMLLVM是架构编译器的框架系统,以C++编写而成,用于优化任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time)。对开发者保持开放,并兼容已有脚本传统编译器设计源码 Source Code + 前端 Frontend + 优化器 O....
iOS-底层原理 30:Block底层原理
本文主要介绍block的类型、循环引用的解决方法以及block底层的分析block 类型block主要有三种类型__NSGlobalBlock__:全局block,存储在全局区void(^block)(void) = ^{ NSLog(@"CJL"); }; NSLog(@"%@", block);此时的block无参也无返回值,属于全局block__NSMallocBlock__:堆区...
iOS-底层原理 29:锁的原理
本文主要介绍常见的锁,以及synchronized、NSLock、递归锁、条件锁的底层分析锁借鉴一张锁的性能数据对比图,如下所示可以看出,图中锁的性能从高到底依次是:OSSpinLock(自旋锁) -> dispatch_semaphone(信号量) -> pthread_mutex(互斥锁) -> NSLock(互斥锁) -> NSCondition(条件锁) ->...
iOS-底层原理 28:GCD 之 底层原理分析
本文是队列创建、同步/异步函数、单例、信号量以及调度组的底层原理分析队列创建在上一篇文章iOS-底层原理 26:GCD 之 函数与队列中,我们理解了队列与函数,知道队列的创建时通过GCD中的dispatch_queue_create方法,下面我们在libdispatch.dylib去探索队列是如何创建的(下载链接)底层源码分析在源码中搜索dispatch_queue_createdispatch....
iOS-底层原理 26:GCD 之 函数与队列
本文的主要目的是理解不同队列与不同函数之间组合的情况GCD简介GCD全称是Grand Central Dispatch纯C语言,提供例如非常强大的函数GCD优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码【重点】用一句....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
mPaaS 移动开发平台
mPaaS 源于蚂蚁集团金融科技,为 App 开发、测试、运营及运维提供云到端的一站式解决方案,致力于提供高效、灵活、稳定的移动研发、管理平台。 官网地址:https://www.aliyun.com/product/mobilepaas/mpaas
+关注