首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS
Potato_土豆
创建于2021-07-19
订阅专栏
iOS开发笔记
等 2 人订阅
共43篇文章
创建于2021-07-19
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
iOS底层原理-界面优化
界面优化无非就是解决卡顿问,优化界面流畅度,以下就通过先分析卡顿的原因,然后再介绍具体的优化方案,来分析如何做界面优化 界面渲染流程 具体流程可以参考图片渲染初探这里就大概讲一下图片渲染的流程,大体上
iOS底层原理-RunLoop
准备工作 RunLoop源码下载地址 RunLoop 概念 RunLoop 简介 RunLoop其实就是一种事务处理的循环,是事件接受、分发的机制的实现,用来不停的调度工作以及处理输入事件。其本质就是
内存管理下篇(强引用分析、AutoReleasePool)
强引用分析 示例代码 强引用出现的情况及原因分析 先在B页面创建一个timer,然后从A页面push到B此时timer开始执行然后再pop回到A页面,部分人可能会觉得此时timer会暂停执行,因为ti
内存管理上篇(TaggedPointer、retain、release、dealloc、retainCount 底层源码分析)
什么是内存管理 不同系统版本对App运行时占用的内存限制不同。当程序所占用的内存较多时,系统就会发出内存警告,这时就得回收一些不需要再使用的内存空间。比如回收一些不需要使用的对象、变量等。如果程序占用
App启动优化
App的启动过程 App的启动一般是指从用户点击App开始到AppDelegate的didFinishLaunching方法执行完成为止,一般又将启动分为冷启动和热启动。 冷启动 冷启动: 是指App
LLVM编译流程
LLVM概述 LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(r
Block底层分析
block简介 Block块是封装工作单元的对象,是可以在任何时间执行的代码段。其本质上是可移植的匿名函数,可以作为方法和函数的参数传入,可以从方法和函数中返回。—(翻译自官方文档) 块是对C语言的一
锁的原理
锁的种类 互斥锁(Mutual exclusion,缩写 Mutex) 防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。当获取锁操作失败时,线程会进入睡眠,等待锁释放时被唤醒。 互斥锁又
GCD源码分析
如果是串行队列,则使用_dispatch_get_root_queue(0, true)函数获取目标队列,获取到的目标队列是_dispatch_root_queues[DISPATCH_ROOT_QUEUE_IDX_DEFAULT_OVERCOMMIT_PRIORITY]。 如…
GCD之函数与队列
GCD是Grand Central Dispatch的简称,是Apple开发的一个多核编程的解决方法,GCD包括了语言特性、运行时库和系统改进,这项改进为并发代码在iOS和OS X的多核硬件上提供了系统全面的支持。GCD帮助系统和你的应用运行更快,更有效率,并且提高了响应速度。…
内存五大区
首先系统会加载二进制代码到内存中,然后加载常量区中的常量,接着加载全局区和静态区(初始化过的静态区和没有初始化过的静态区是分开的),之后程序会找main入口函数开始执行代码,在执行代码的过程中,会创建对象和一些局部变量,其中对象存放在堆中,变量存放在栈上,以上五个区中只有堆是由…
自定义KVO
工具方法根据key返回对应的setter方法名称就是简单的字符串拼接根据对应的setter方法拿到对应的key就是简单的字符串截取添加观察者方法验证是否存在setter方法这一步相对比较简单,就是查询
KVO原理探索
注册观察者对象以接收相对于接收此消息的对象的密钥路径的KVO通知。 observer:注册KVO通知的对象。观察者必须实现键值观察方法observeValueForKeyPath:ofObject:change:context: keyPath:要观察的属性相对于接收此消息的对…
KVC底层原理分析
KVC全称是Key Value Coding,定义在NSKeyValueCoding.h文件中,是一个非正式协议。KVC提供了一种间接访问其属性方法或成员变量的机制,可以通过字符串来访问对应的属性方法或成员变量。 同样是返回key对应的属性值,但是这里需要传递key的路径 va…
Method-Swizzling 方法交换
Method-Swizzling是什么method-swizzling的含义是方法交换,其主要作用是在运行时将一个方法的实现替换成另一个方法的实现,这就是我们常说的iOS黑魔法,(所谓的交换就是改掉s
OC底层面试解析(持续更新中...)
发现[self class]方法底层是调用objc_msgSend方法进行消息发送,消息接收者是self,方法编号是class。[super class]是调用objc_msgSendSuper方法进行消息发送,消息接收者是self,方法编号是class。
类扩展与关联对象
准备工作添加类扩展,并添加属性、方法在分类中添加属性,并实现set、get方法类扩展类别和类扩展的区别类别专门给类添加新的方法不能给类添加成员属性,添加了成员属性也是无法取到的可以通过runtime给
类的加载(下)-分类的加载
通过打印发现此时的ro已经含有了分类的方法了。(协议、属性如想要验证如上调试即可)
类的加载(上)
rw 表示 readWrite,即可读可写,由于其动态性,可能会往类中添加属性、方法、添加协议,在最新的2020的WWDC的对内存优化的说明Advancements in the Objective-C runtime - WWDC 2020 - Videos - Apple …
dyld与objc的关联
读取影响运⾏时的环境变量。如果需要,还可以打印环境变量帮助。export OBJC_HELP = 1 冲源码中发现可以通过配置OBJC_HELP和OBJC_PRINT_OPTIONS两个环境变量来打印所有环境变量。配置环境变量的方法target -- Edit Scheme -…
下一页