暂无个人介绍
synchronized, NSLock, 递归锁, 条件锁
在上篇文章iOS 程序加载流程分析中分析dyld的过程中, 其中有一幅图来分析_objc_init符号断点图, 如下:
dyld简介;dyld共享缓存;dyld程序启动过程;_objc_init符号断点:
1. 先来看下动态方法决议的分析;2. 通过instrumentObjcMessageSends来辅助分析;3. 有关反汇编;
有关上篇文章分析了objc_msgSend快速查找流程, 当在类的方法缓存中查找不到的话, objc_msgSend就会进入慢速查找流程, 我们来分析一下: (注, 以下代码都是在arm64环境下的)
本文主要是对objc_msgSend的分析理解, 在分析cache_t的流程时, 我们只分析了写入流程, 其实还有一个cache读取流程, 有objc_msgSend和cache_getImp.
紧接着我们来分析类结构体中cache_t, 只从单词来看就能猜出来是与缓存有关. 下面我们先看cache_t的源码:
1.class_getInstanceMethod : 获取实例方法, 如果指定类或其父类不包含带有指定选择的实例方法, 则为NULL. 2.class_getClassMethod : 获取类方法, 如果指定类或其父类不包含具有指定的类方法, 则为NULL. 3.class_getMethodImplementation : 获取方法的具体实现, 如果未查找到, 则进行消息转发.
我们来分析类的结构: 先引入一个列子,(注意以下代码是在objc源码中调试的): 例子说明: CJLPerson继承于NSObject, CJLTeacher继承于CJLPerson
在对象调用alloc, 之后调用的最后一个方法是obj->initInstanceIsa, 它的作用是将isa指针与我们的对象关联起来, 我们来分析一下isa指针.
这里我们来分析结构体内存对齐方式, 从中我们可以间接的分析出在OC中内存的对齐方式大概什么样.
有关alloc之后, 底层代码的执行顺序以及解析
有关光照的代码公式, 在此用CC老师已经写好的代码做一个记录, 方便以后使用的时候查询.
我们用GLSL来编写着色器代码时, 要了解他们的一些内建变量参数的含义. 本文就是对内建变量做一些介绍.
因为着色器里面没有编译器提示, 所以熟悉着色器代码语法是非常有必要的
在Mac开发的环境中.jpg .png结尾的图片都可以当做纹理数据源, 但是在使用的时候需要解压缩, 以下方法就是通过图片名来获取最终需要的
在用OpenGL ES绘制图片的时候, 我们发现所绘制的图片颠倒了, 以下我们来使用几种解析策略来解决这个问题, 通过探索找到最适合自己的方法.
精度范围;注意
GLKViewController关于更新方法的补充
GLKit 框架的设计⽬标是为了简化基于 OpenGL / OpenGL ES 的应用开发。它的出现加快 OpenGL ES 或 OpenGL 应⽤程序开发。使⽤数学库,背景纹理加载,预先创建的着色器效果,以及标准视图和视图控制器来实现渲染循环。
OpenGL ES (OpenGL for Embedded Systems) 是以⼿手持和嵌⼊入式为⽬目标的⾼高级3D图形应 ⽤用程序编程接⼝口(API). OpenGL ES 是⽬目前智能⼿手机中占据统治地位的图形API.⽀支持的平台: iOS, Andriod , BlackBerry ,bada ,Linux ,Windows.
1. 读取文件;2. 载入纹理;3. 更新纹理;4. 插入替换纹理;5. 使用颜色缓存区加载数据, 形成新的纹理;
在绘制3D场景的时候,我们需要决定哪些部分是对观察者可见的,或者哪些部分是对观察者不可见的,对于不可见的部分,应该及早丢弃。例如在一个不透明的墙壁后,就不应该有渲染,这种情况叫做隐藏面消除(Hidden surface elimination).
OpenGL渲染管线简化流程图
圆、五角星、正弦函数图形的绘制
1.在Xcode内新建一个项目;2.选macOS > APP;3.修改项目名;4.添加OpenGl.framework和GLUT.framework两个依赖库;5.需要的文件include文件包和libGLToos.a;6.新建C++文件 起名为main;7.signing & Capabilities 中证书改为 Sing to Run Locally;8. 记得在Build Settings 中的 Header Search Paths中增加include文件夹的路径;9.加入测试代码 编辑运行
OpenGL (Open Graphics Library)是⼀个跨编程语⾔、跨平台的编程图形程序接⼝,它将计算机的资源抽象称为⼀个个OpenGL的对象,对这些资源的操作抽象为⼀个个的OpenGL指令。
更新到Xcode11后修改了点bug,一直没有打包,今天打包发现失败了,提示IPA processing failed,查看日志:IDEDistribution.standard.log
构建版本不出现大多数都是由于info.plist文件中没有添加相应的访问权限或者对权限key值没有添加对应的value提示语。
开发中有时候需要用到假数据, 假数据的用途
更换tabbar的图表并不难, 难在动态更换时的思路, 我们可以先看看设置tabbarItem代码找思路:
今天跟安卓的同学对接一个问题, 发现了一个及其坑爹的BUG, 安卓在进行UrlEncode编码时, 将空格转义为了"+", 但是iOS这边进行UrlEncode编码时, 是将空格转义为"%20", 这不坑爹的嘛, 在对接的时候两边数据对不上
最近公司有个需求就是要画图表, 同事推荐了一个图表库, 看着不错的样子, 就是大名鼎鼎的Charts
近段时间苹果再次提交审核的时候, 6.5寸的屏幕快照变成必选项了, 这样我们这种在上线前抓紧把BUG改完, 以为提交审核顺利的人, 着实头疼了一把.