首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS
Potato_土豆
创建于2021-07-19
订阅专栏
iOS开发笔记
等 2 人订阅
共43篇文章
创建于2021-07-19
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
dyld加载流程
可执行文件的大小不一样,静态库编译时会把涉及到的方法拷贝到可执行文件中去,而动态库仅仅是一些动态库的信息。 系统的动态库基本上每个程序都会用到,如果没有共享缓存,每次程序启动都会将动态库加载到内存中去,会增加程序启动的时间,同时系统的运行也会变得缓慢。而共享缓存机制会在进程启动…
消息流程分析之 动态方法决议 & 消息转发
准备工作objc4-781可编译源码github.com/Bore-TuDou/…创建一个TDPerson里面有一个没有实现的实例方法sayNB和一个没有实现的类方法sayHappy,然后在创建一个T
objc_msgSend方法查找-慢速查找
快速查找的核心方法lookUpImpOrForward源码分析__objc_msgSend_uncached通过https://juejin.im/post/6888664078542831630这篇
objc_msgSend方法查找-快速查找
顾名思义就是正在编译的时候. 那啥叫编译呢?就是编译器帮你把 源代码翻译成机器能识别的代码. (当然只是⼀般意义上这么说,实际上可能只是翻译成某个中间状态的语⾔.) 编译时就是简单的作⼀些翻译⼯作 ,⽐如检查你有没有粗⼼写错啥关键字了啊.有啥词法分析,语法分析之类的过程. 就像…
objc_class 中 cache 原理分析
准备工作objc4-781可编译源码创建一个类随意创建几个方法如下通过源码探索cache所包含的内容sel:方法编号(其实就是方法名)imp:函数指针地址查找cache中的sel和imp通过源码查找应
类的结构分析
准备工作定义两个类TDPerson和TDTeacher然后TDTeacher继承TDPerson,这两个类里面的内容分别是TDPerson:TDTeacher:先看类在底层到底是什么先将main.m编
通过源码分析isa
通篇以一下代码为例objc4-781源码中验证对应方法clang概念将oc文件编译成c++文件的编译指令clang-rewrite-objcmain.m-omain.cppclang-rewrite-
内存对齐原则
通篇会以一下三个个结构体为例讲解内存对齐原则**(注意:OC对象的对齐原则是16字节对齐)**每个结构体的成员,第一个成员都位于偏移为0的位置,以后每个数据成员的偏移量min(#pragmapack(
alloc & init & new 源码分析
sizeof的最终结果必然是结构内部最大成员的整数倍,不够补齐。结构内部最大成员包含子成员结构体内部的成员,如下例子: 结构内部各个成员的首地址必然是自身大小的整数倍。 整个sizeof的最终结果必然是 min[n,结构内部最大成员] 的整数倍,不够补齐。 结构内部各个成员的首…
源码探索的三种方法
下符号断点的形式直接跟流程流程结果从上图结果可以知道alloc的源码就在libobjc.A.dylib库中,此时就需要去Apple相应的开源网址下载objc源码通过摁住control-stepinto
RGB&YUV颜色编码
RGB三个字母分别代表了红(Red)、绿(Green)、蓝(Blue)、三种颜色,这三种颜色被称为三原色,通过将这三个颜色以不同的比例相加,得到各种不同的颜色。 RGB图像中,每个像素点都有红、绿、蓝三个原色,其中每种原色都占用8bit,也就是一个字节,那么一个像素点也就占用了…
Metal Shading Language着色语言规范
作用:Metal 着⾊语⾔ 是⽤来编写 3D 图形渲染逻辑 和 并⾏计算核⼼逻辑的 ⼀⻔编程语⾔. 当你使⽤Metal 框架来完成APP 的实现时则需要使⽤Metal 编程语⾔; 在Metal 中实现缓存靠的是⼀个指针.它指向⼀个在Device 或者 constant 地址空间…
使用自定义着色器实现一个图片的渲染
A renderbuffer object is a 2D image buffer allocated by the application. The renderbuffer can be used to allocate and store color, depth, o…
使用GLKit绘制一个旋转的正方体
实现效果准备工作本地工程放一个图片用来将图片贴在正方体面上,这里工程用的是daitu.png,定义一个顶点数据的结构体,用来存储顶点、纹理、法线坐标这里修改ViewController继承类,继承GL
OpenGL中矩阵应用场景
概念: 在3D笛卡尔坐标系, 基本上⼀个顶点就是XYZ坐标空间上的⼀个位置. ⽽在空间中给定的⼀个位置恰恰是由⼀个单独的XYZ定义的.⽽这这样的 XYZ 就是向量; math3d库,有2个数据类型,能够表示⼀个三维或者四维向量。 M3DVector4f则可以表示⼀个四维向量(x…
OpenGL 渲染技巧:混合
将源色和目标色以某种方式混合生成特效的技术。混合常用来绘制透明或半透明的物体。在混合中起关键作用的α值实际上是将源色和目标色按给定比率进行混合,以达到不同程度的透明。α值为0则完全透明,α值为1则完全不透明。混合操作只能在RGBA模式下进行,颜色索引模式下无法指定α值。物体的绘…
OpenGL 渲染技巧:正背面剔除、深度测试
冲上面的运行结果会发现很明显在转动的过程中会出现黑色区域,出现的原因其实很简单,首先明确有光源照到的地方也就是阳面肯定是显示的是正常的颜色,没有光源照到的地方也就是阴面肯定是黑色,而在图形转动的过程中OpenGl不知道该显示阳面还是阴面,所以就导致出现红黑色交替的现象。解决方案…
案例-金字塔、六边形、圆环绘制
矩阵堆栈: 矩阵堆栈只是保存变化的状态。初始化矩阵堆栈,深度64,初始化的时候会默认在栈顶初始化一个单元矩阵。
深入解析iOS离屏渲染原理
很多人对于离屏渲染都有个误区就是圆角加clipsToBounds/masksToBounds设置为true就会造成离屏渲染。冲上面的代码就可以推到这种说法,从上图可知只有view3造成了离屏渲染,而view2设置了圆角并且clipsToBounds设置为true,但是view2…
图片渲染流程初探
确认场景中哪些对象需要被渲染,一个object只要在符合特定的规则才会被渲染。例如,当处于相机的视锥体内的对象可以被渲染,而超出(不在视锥体内)的部分则被剔除(Culled),不进行渲染 CPU会收集这些将要被渲染的每一个对象的数据,并且整合成指令,即我们常说的Draw Cal…
下一页