iOS底层
文章平均质量分 61
iOS底层
淡暗云之遥
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
13.02-耗电优化
文章目录1. 耗电的主要来源2. 耗电优化1. 耗电的主要来源2. 耗电优化尽可能降低CPU、GPU功耗少用定时器优化I/O操作尽量不要频繁写入小数据,最好批量一次性写入读写大量重要数据时,考虑用dispatch_io,其提供了基于GCD的异步操作文件I/O的API。用dispatch_io系统会优化磁盘访问数据量比较大的,建议使用数据库(比如SQLite、CoreData)网络优化减少、压缩网络数据.如果多次请求的结果是相同的,尽量使用缓存.使原创 2022-04-06 13:37:24 · 174 阅读 · 0 评论 -
13.01CPU&GPU_卡顿
文章目录1. 屏幕成像原理屏幕成像原理卡顿产生的原因2. 卡顿优化1. CPU2. GPU3. 3. 离屏渲染卡顿检测1. 屏幕成像原理屏幕成像原理iOS 是每秒60帧1S/60 = 16.7ms每16.7ms产生一个垂直同步信号(VSync),刷新屏幕卡顿产生的原因每当垂直同步信号来到时,就会到帧缓冲区中读取屏幕内容,然后刷新屏幕.如果cpu + GPU 处理的时间 多于16.7ms,那么当垂直同步信号发出时,会发现帧缓存区内没有内容可以刷新屏幕,那么这一次,屏幕内容不变,原创 2022-04-06 12:57:17 · 551 阅读 · 0 评论 -
12.06-自动释放池(autoreleasepool)
文章目录1. 自动释放池查看CPP代码2. AutoreleasePoolPage的结构3.原创 2022-04-06 12:02:19 · 1762 阅读 · 0 评论 -
12.04-内存管理_Copy,MutableCopy
文章目录1. 可变&不可变2.深拷贝&浅拷贝1. 可变&不可变copy :copy 出来的都是不可变的类型MutableCopy :mutableCopy 出来的都是可变对象2.深拷贝&浅拷贝对不可变类型的数据进行copy,就是浅拷贝(指针拷贝)源数据和目标数据都是不可变的, 所以为了不让费内存,就不重新赋值一块内存了,直接指针拷贝,大家共用一块内存就可以了其它的组合都是深拷贝(内存拷贝)因为不论是源数据,还是目标数据原创 2022-03-30 16:02:36 · 2571 阅读 · 0 评论 -
12.03-内存管理_Tagged Pointer
文章目录1. Tagged Pointer1. Tagged Pointer用于优化NSNumber , NSDate , NSString 等小对象的存储.在没有使用tagged Pointer之前,NSNumber等对象需要动态分配内存,维护引用计数等,NSNumber指针存储的是堆中的对象地址.使用tagged Pointer之后,NSNumber指针里面存储的数据变成了tag(数据类型) + Datatag : 标记 表明里面存储的是什么类型(NSNumber,NSDat原创 2022-03-15 10:45:29 · 2809 阅读 · 0 评论 -
12.02-内存管理-内存布局
文章目录1.内存布局1.内存布局可以看看各个变量的地址大小原创 2022-03-15 10:31:19 · 641 阅读 · 0 评论 -
12.01-内存管理_定时器的循环引用
循环引用,定时器原创 2022-03-15 10:10:55 · 2742 阅读 · 0 评论 -
11.04-多线程_线程锁
文章目录1.OSSpinLock2. os_unfair_lock3. pthread_mutex递归锁条件4. NSLock,NSRecursiveLock5. NSConditionLock6.dispatch_semaphore7. dispatch_queue8. @synchronized9. iOS线程同步方案性能比较10.自旋锁,互斥锁比较11.读写安全1. pthread_rwlock2. dispatch_barrier_async1.OSSpinLock2. os_unfair_原创 2022-03-02 17:05:08 · 127 阅读 · 0 评论 -
11.03-多线程_NSOperation
文章目录1. 基本操作添加事物到队列NSBlockOperationqualityOfService 优先级主线程通信2. NSOperation属性挂起(暂停,继续) 和 全部取消NSOperation 是一个抽象类1. 基本操作添加事物到队列直接start不指定队列就在主线程,添加到队列后就不用start了NSBlockOperationqualityOfService 优先级主线程通信2. NSOperation属性挂起(暂停,继续) 和 全部取消...原创 2022-03-02 16:44:41 · 161 阅读 · 0 评论 -
11.02-多线程_GCD
文章目录1.队列2.栅栏函数3. 调度组3.信号量Dispatch_SourceGCD : 纯C语言,自动利用更多的CPU内核,自动管理线程的生命周期(创建线程,调度任务,销毁线程)1.队列-主队列专门用来在主线程上调度任务的队列不会开启新线程如果当前主线程正在有任务执行,那么无论主队列中当前被添加了什么任务,都不会被调度dispatch_get_main_queue();全局队列为了方便程序员的使用,苹果提供了全局队列 dispatch_get_global_queue(0原创 2022-03-02 16:36:01 · 2417 阅读 · 0 评论 -
11.01-多线程
文章目录1. 线程和进程的关系和区别1. 线程的定义2. 进程的定义3.进程和线程的区别2. 多线程的意义3. 线程的生命周期4.线程池调度原理5. 容易混淆的术语1. 线程和进程的关系和区别1. 线程的定义线程是进程的基本执行单元,一个进程的所有任务都在线程中执行进程想要启动,必须要有线程,进程只需要有一条线程程序启动会默认开启一条线程,这条线程会被成为主线程2. 进程的定义进程是指在系统中正在运行的一个应用程序**每个进程之间都是独立的,**每个进程都运行在其专用的,且都保护的内原创 2022-03-02 16:11:40 · 256 阅读 · 0 评论 -
10.01-runloop
runloop原创 2022-03-02 15:53:58 · 1425 阅读 · 0 评论 -
09.06-消息转发
文章目录1. 消息转发1. 把消息转发给其它能处理的对象2. 方法签名2. 流程图1. 消息转发如果自身不能处理消息,那么可以把消息转发给别的能处理的对象1. 把消息转发给其它能处理的对象Dog对象不能处理call : 方法而Animal里面实现了call: 方法,就把消息转发给Animal来处理2. 方法签名生成方法签名,然后转发给别的对象处理NSInvocation可以修改消息接受者可以修改selector可以修改参数结果2. 流原创 2022-03-02 10:48:44 · 133 阅读 · 0 评论 -
09.05-消息解析-resolveInstanceMethod
resolveInstanceMethod原创 2022-03-02 09:12:37 · 911 阅读 · 0 评论 -
09.04-消息发送
objc_msgSend,原创 2022-03-01 16:15:30 · 835 阅读 · 0 评论 -
09.03-runtime_cache方法缓存
快速查找,cache原创 2022-03-01 14:18:35 · 2210 阅读 · 1 评论 -
09.02-runtime_class的结构
class的结构原创 2022-03-01 12:55:03 · 142 阅读 · 0 评论 -
09.01-runtime_isa详解
文章目录1. isa详解2. 位域1. isa详解在arm64架构之前,isa就是一个普通的指针,存储着Class,Meta-Class对象的内存地址从arm64架构开始,对isa进行了优化,变成了一个**共用体(union)**结构,还使用位域来存储更多的信息位域中各个存储位的作用2. 位域0b 0000 0000 : 后四位分别代表着方向 right,left,down,up这样可以节省空间...原创 2022-03-01 12:40:05 · 157 阅读 · 0 评论 -
08.06-block循环引用
1. ARC 解决循环引用__block id weakSelf = self不能解决循环引用的问题必须调用block() , 在block中用weakSelf = nil , 断开引用循环2. MRC 解决循环引用原创 2022-03-01 12:12:42 · 124 阅读 · 0 评论 -
08.05-block -- __block
__block原创 2022-03-01 12:00:32 · 118 阅读 · 0 评论 -
08.04-block 对象类型的变量
block , 对象类型的变量原创 2022-03-01 11:48:58 · 841 阅读 · 0 评论 -
08.03-block的类型
block的类型原创 2022-03-01 11:38:48 · 233 阅读 · 0 评论 -
08.02-block变量捕获
block变量捕获原创 2022-03-01 11:30:10 · 295 阅读 · 0 评论 -
08.01-block
block原创 2022-03-01 11:10:19 · 141 阅读 · 0 评论 -
06. 03 +initialize方法
initialize原创 2022-02-26 18:05:27 · 287 阅读 · 0 评论 -
06.02 +load
+load方法的执行过程,原创 2022-02-26 16:15:43 · 424 阅读 · 0 评论 -
06. 01-Category
Category原创 2022-02-26 14:25:18 · 177 阅读 · 0 评论 -
5.KVC
KVC,取值赋值的过程原创 2022-02-26 10:56:57 · 228 阅读 · 0 评论 -
4.KVO
KVO,KVO是如何实现的原创 2022-02-26 09:58:18 · 249 阅读 · 0 评论 -
03. isa&supperclass
文章目录1. isa指针2. class对象的superclass指针3. isa,superclass总结在这里插入图片描述4. isa指针5. struct objc_class的结构1. isa指针instance的isa指向class当调用对象方法时,通过instance的isa找到class,最后找到对象方法的实现进行调用class的isa指向meta-class当调用类方法时,通过class的isa找到meta-class,最后找到类方法的实现来进行调用2. class对原创 2022-02-21 13:39:06 · 529 阅读 · 0 评论 -
02.OC对象的本质
文章目录1.isntance(实例对象)在这里插入图片描述2. class(类对象)3.meta-class(元类对象)4.注意5. objc_getClass & object_getclass1.isntance(实例对象)2. class(类对象)3.meta-class(元类对象)4.注意以下代码获取的objcetClass是class对象,并不是meta-class对象Class objectClass = [[NSObject class] class];//获取原创 2022-02-21 12:42:57 · 454 阅读 · 0 评论 -
01.01OC对象的本质
iOS底层,实例对象分配内存大小原创 2022-02-21 12:34:37 · 631 阅读 · 0 评论
分享