2022年7月2日
摘要: 一、KVC 1.1 什么是KVC KVC指的是键值编码;通过key来直接访问对象的属性,然后由NSKeyValueCoding非正式协议启用的机制。 KVC本质上是对NSObject、NSArray、NSMutableDictionary、NSOrderedSet、NSSet等对象;实现NSKeyV 阅读全文
posted @ 2022-07-02 11:13 suanningmeng98 阅读(93) 评论(0) 推荐(0) 编辑
  2022年7月1日
摘要: 这篇文章参考自https://juejin.cn/post/7113799052122128392 一、卡顿原理 1.1 界面显示原理 CPU:layout UI布局,文本计算,display绘制,prepare图片解码,commit位图给GPU GPU:用于渲染,将结果放入FrameBuffer 阅读全文
posted @ 2022-07-01 18:10 suanningmeng98 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 一、什么是自动释放池 OC中的一种内存自动回收机制,它可以延迟加入AutoreleasePool中的变量release的时机 当创建一个对象,在正常情况下,变量会在超出其作用域时立即 release ,如果将其加入到自动释放池中,这个对象并不会立即释放,而会等到 runloop 休眠 / 超出aut 阅读全文
posted @ 2022-07-01 15:05 suanningmeng98 阅读(898) 评论(0) 推荐(0) 编辑
  2022年6月30日
摘要: 一、散列表sideTable的数据结构 SideTable主要包含spinlock锁,引用计数表(存放从extra_rc接收的一半引用计数),弱引用表。 truct SideTable { spinlock_t slock; // 存放从extra_rc接收的那一半引用计数 RefcountMap 阅读全文
posted @ 2022-06-30 14:21 suanningmeng98 阅读(169) 评论(0) 推荐(0) 编辑
  2022年6月29日
摘要: 一、内存分布 当程序运行时,系统会开辟内核区、用户区。 值类型:存入栈;无需进行内存管理 引用类型:存入堆;无需进行内存管理 二、iOS的内存管理方案 2.1 Tagged Pointer(无需进行引用计数) Tagged Pointer 是一个指针,指针中包含Tagged标记,用于区分存储的数据类 阅读全文
posted @ 2022-06-29 22:17 suanningmeng98 阅读(66) 评论(0) 推荐(0) 编辑
  2022年6月27日
摘要: 一、简单了解MVC 经典图如下:M-Model;V- view;C-controller;就是Controller对象拥有View和Model对象,两者通过Controller进⾏沟通。在MVC中,controller都是挑大头的存在,网络请求的接收和处理都放在了Controller中,Model只 阅读全文
posted @ 2022-06-27 20:54 suanningmeng98 阅读(330) 评论(0) 推荐(0) 编辑
  2022年6月23日
摘要: 一、什么是编译器插桩 编译器插桩是指在编译期间修改已有的代码或者生成新的代码。 二、准备知识 Tracing PCs是用来跟踪CPU将要执行的指令代码;我们可以借此拿到程序启动时需要的用到的函数,然后减少缺页中断的产生,从而达到启动优化的效果。如何配置如下面这个图所示: 工程中配置使用它-fsani 阅读全文
posted @ 2022-06-23 17:24 suanningmeng98 阅读(265) 评论(0) 推荐(0) 编辑
  2022年6月17日
摘要: 一、APP的启动(分为两个阶段) 1.1 pre-main pre-main在main()函数之前,可分为四个阶段: 1.dylibloading:加载动态库。可以通过减少动态库的数量来优化这一部分所消耗的时间。 苹果的建议是一个项目里面自己制作的动态库的数量不超过6个。 2. ObjCsetup: 阅读全文
posted @ 2022-06-17 19:46 suanningmeng98 阅读(751) 评论(0) 推荐(0) 编辑
摘要: 一、LLVM概述 LLVM(Low Level Virtual Machine)是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-t 阅读全文
posted @ 2022-06-17 11:13 suanningmeng98 阅读(140) 评论(0) 推荐(0) 编辑
  2022年6月16日
摘要: 一、Block的三种类型 1.全局Block(NSGlobalBlock) 2.栈Block(NSMallocBlock) 3.堆Block(NSStackBlock) 区别在于:如果没有引用局部变量,或者只引用了静态变量和全局变量,则为全局Block,如果内部有使用局部变量,如果有被强指针引用过, 阅读全文
posted @ 2022-06-16 17:16 suanningmeng98 阅读(189) 评论(0) 推荐(0) 编辑