摘要:
说明:阅读本文章,请参考之前的block文章加以理解; 一、栈区block分析 //代码 //打印 分析: <1>block代码内部引用的Person实例对象先于输出语句销毁,因为per仅限于大括号内,但此时block销毁了没有?往下看; <2>上述block代码块并没有被指针持有,接下来看看指针持 阅读全文
摘要:
说明: <1>阅读本文,最好阅读之前的block文章加以理解; <2>本文内容:三种block类型的copy情况(MRC)、是否深拷贝、错误copy; 一、MRC模式下,三种block类型的copy情况 //代码 //打印 分析: <1>只有stack类型block实例对象copy后的类型变为mal 阅读全文
摘要:
一、oc代码 提示:看本文章之前,最好按顺序来看; //代码 //打印 分析: 1)三个block的类型分别为:__NSGlobalBlock__、__NSMallocBlock__、__NSStackBlock__,什么原因,往下看; 2)上述三种类型最终都是继承自NSBlock,而NSBlock 阅读全文
摘要:
一、代码 说明:本文章须结合文章《block本质探寻一之内存结构》和《class和object_getClass方法区别》加以理解; //main.m //打印 分析:很显然,只有c的值没有改变,其它变量的值都改变了——为什么,看下底层代码实现; 二、main.cpp 分析: 1)C语言语法 <1> 阅读全文
摘要:
一、代码——命令行模式 //main.m block(20, 30); 分析:以下代码的前提,因为我们知道block底层的构造就是上述结构体的构造,桥接的目的就是展示这样的结构体内部是怎样的; 二、调试 //lldb模式 1)第一个断点 2)第二个断点 3)转入汇编 4)汇编界面 分析: 1)我们发 阅读全文
摘要:
一、概述 1.本文章内容,须参照本人的另一篇博客文章“class和object_getClass方法区别”加以理解; 2.基本使用: //给实例对象instance添加观察者,监听该实例对象的某个属性值的变化 //监听值改变 二、代码分析 1)添加kvo前后,类对象名称及其地址,以及setter方法 阅读全文
摘要:
一、概述 如上图: 1.内存创建一个instance实例对象(Person *per),同时会创建一个与之对应的类对象(Class perClass)和元类对象(Class perMeta); 注:实例对象通过calloc可创建多个,但类对象和元类对象在内存中只有一份,只创建一次; 2.对象的本质, 阅读全文
摘要:
一、理解 利用GLKBaseEffect,自定义顶点着色器和片元着色器,结合天空盒子,展示效果 二、技术代码 CCSkyBoxEffect:天空盒子效果类; CCSkyboxShader.vsh:顶点着色器; CCSkyboxShader.fsh:片元着色器; //立方体场景贴图纹理处理及顶点数据处 阅读全文
摘要:
一、思路 第一,图片拖拽位置互换/删除,参照第三方; 第二,图片用scrollview浏览,缩放用zoomToRect,不用CGAffineTransformScale; 其次,还要返回当前缩放图片 二、核心代码就不贴了,HDragItemListView.m主要处理图片拖拽的功能 三、效果图 Gi 阅读全文
摘要:
一、概述 利用自定义顶点和片元着色器渲染,并且设置图片纹理颜色为画笔颜色 二、核心代码 三、效果图 GitHub 阅读全文