会员
周边
捐助
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
suanningmeng98
博客园
首页
新随笔
联系
订阅
管理
2022年7月2日
iOS-KVC+KVO
摘要: 一、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日
iOS-界面优化
摘要: 这篇文章参考自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)
编辑
iOS-自动释放池
摘要: 一、什么是自动释放池 OC中的一种内存自动回收机制,它可以延迟加入AutoreleasePool中的变量release的时机 当创建一个对象,在正常情况下,变量会在超出其作用域时立即 release ,如果将其加入到自动释放池中,这个对象并不会立即释放,而会等到 runloop 休眠 / 超出aut
阅读全文
posted @ 2022-07-01 15:05 suanningmeng98
阅读(898)
评论(0)
推荐(0)
编辑
2022年6月30日
iOS-散列表
摘要: 一、散列表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-内存管理
摘要: 一、内存分布 当程序运行时,系统会开辟内核区、用户区。 值类型:存入栈;无需进行内存管理 引用类型:存入堆;无需进行内存管理 二、iOS的内存管理方案 2.1 Tagged Pointer(无需进行引用计数) Tagged Pointer 是一个指针,指针中包含Tagged标记,用于区分存储的数据类
阅读全文
posted @ 2022-06-29 22:17 suanningmeng98
阅读(66)
评论(0)
推荐(0)
编辑
2022年6月27日
iOS架构之MVC+MVVM
摘要: 一、简单了解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日
iOS启动优化之编译器插桩
摘要: 一、什么是编译器插桩 编译器插桩是指在编译期间修改已有的代码或者生成新的代码。 二、准备知识 Tracing PCs是用来跟踪CPU将要执行的指令代码;我们可以借此拿到程序启动时需要的用到的函数,然后减少缺页中断的产生,从而达到启动优化的效果。如何配置如下面这个图所示: 工程中配置使用它-fsani
阅读全文
posted @ 2022-06-23 17:24 suanningmeng98
阅读(265)
评论(0)
推荐(0)
编辑
2022年6月17日
iOS之启动优化
摘要: 一、APP的启动(分为两个阶段) 1.1 pre-main pre-main在main()函数之前,可分为四个阶段: 1.dylibloading:加载动态库。可以通过减少动态库的数量来优化这一部分所消耗的时间。 苹果的建议是一个项目里面自己制作的动态库的数量不超过6个。 2. ObjCsetup:
阅读全文
posted @ 2022-06-17 19:46 suanningmeng98
阅读(751)
评论(0)
推荐(0)
编辑
IOS-LLVM
摘要: 一、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日
iOS之Block
摘要: 一、Block的三种类型 1.全局Block(NSGlobalBlock) 2.栈Block(NSMallocBlock) 3.堆Block(NSStackBlock) 区别在于:如果没有引用局部变量,或者只引用了静态变量和全局变量,则为全局Block,如果内部有使用局部变量,如果有被强指针引用过,
阅读全文
posted @ 2022-06-16 17:16 suanningmeng98
阅读(189)
评论(0)
推荐(0)
编辑
下一页