底层分析
简简单单lym
既然需要信仰,那就面向信仰编程
展开
-
iOS底层原理-8.卡顿及优化
文章目录1. 卡顿的原因2. 卡顿优化3.卡顿的检测1. 卡顿的原因GPU的渲染是通过cpu计算好的结果给GPU来进行渲染的,每一帧的画面都得经过CPU计算然后渲染到GPU,在CPU计算的时候GPU就可能出现大量的等待时间;GPU渲染如果慢于CPU,可能导致CPU计算好的数据无法渲染;2. 卡顿优化cpu尽量使用轻量级的对象,eg:如果不需要使用事件,可以使用CALayer代替U...原创 2020-01-22 11:11:09 · 348 阅读 · 0 评论 -
iOS底层原理-8.内存管理
文章目录1. NSTimer,CADisplayLink 使用注意事项1. NSTimer,CADisplayLink 使用注意事项会对target产生强引用,造成循环引用问题; self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerCount) userInf...原创 2019-12-08 15:34:22 · 274 阅读 · 0 评论 -
IOS底层原理 -7.多线程
文章目录1. iOS中多线程方案2. GCD 同步,异步,串行,并行2.1 从一到面试题入手认识下GCD:2.2 多线程易混淆的名词2.3 面试题解析3 多人线程与runloop3.1 面试题13.2 面试题24 队列组5 线程安全问题1. iOS中多线程方案最底层API pthread: 是一套通用的跨平台的多线程API,是基于c语言,线程的生命周期需要手动管理;NSThread:是对...原创 2019-09-28 12:01:17 · 289 阅读 · 0 评论 -
IOS底层原理 -6.runloop
文章目录1. 简介2. Runloop 对象获取1. 简介iOS 中负责程序运行循环,在程序运行过程中循环做一些事情;保持程序的运行,程序运行时会在main函数中创建一个runloop,负责主线程的持续运行;及处理app中的各种事件的响应,例如:NSTimer,UITouch等;在程序需要处理事件时候runloop就唤起线程,当不许处理事件的时候线程进入休眠状态,这样可以节省线程资源。在OC...原创 2019-09-24 14:13:11 · 438 阅读 · 0 评论 -
IOS底层原理 -5.运行时(2)
文章目录1. 面试题:isKindClass和isMemberOfClass1. 面试题:isKindClass和isMemberOfClass NSLog(@"%d",[[NSObject class] isKindOfClass:[NSObject class]]); //这里最终比较的是NSObject类对象的metaClass是不是与其类对象是不是相同,结...原创 2019-09-11 09:25:28 · 2422 阅读 · 0 评论 -
IOS底层原理 -5.运行时(1)
OC是一种动态性比较强的语言,所有的函数调用都是基于消息机制;简介参照:isa指针;isa在前面介绍过,可以实例对象可以通过其找到类对象,类对象通过isa可以找到原类对象;在arm64后isa并不直接是Class类型,而是union,同时用位域位域(w3c)来存储更多信息(struct test{uintptr_r nonpointer :1; }), char _bool;//将所有BO...原创 2019-09-08 09:55:06 · 280 阅读 · 0 评论 -
IOS底层原理 - 1.OC对象本质
综述: objective-c 的代码(clang -rewrite-objc mian.m -o mian.cpp)最终转成c/c++代码,然后转成汇编代码,最终以机器码执行;那么OC的对象最终在转成c、C++代码后是什么呢?其实C/C++中都能容纳不同类型的数据结构就是结构体,所以Objective-C 的对象/类主要是基于结构体实现注:生成arm64架构的cpp文件1:一个oc对象的内存...原创 2019-08-17 15:12:22 · 3217 阅读 · 0 评论