01 2019 档案
摘要:说明:阅读本文,请参照之前的block文章加以理解; 一、循环引用的本质 //代码——ARC环境 //打印 分析:main函数日志输出之前,Person实例对象就被销毁了——因为在test1()方法中,强指针per持有[[Person alloc] init]对象会执行retain操作导致Perso
阅读全文
摘要:说明: <1>阅读本问,请参照block前述文章加以理解; <2>环境:ARC; <3>变量类型:基本数据类型或者对象类型的auto局部变量; 一、三种情形 //代码 //打印 //clang:xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc -
阅读全文
摘要:说明: <1>阅读本文章,请参照前面的block文章加以理解; <2>本文的变量指的是auto类型的局部变量(包括实例对象); <3>ARC和MRC两种模式均适用; 一、无法修改的原因 //代码 很明显,强行给age赋值会报错; //打印 分析:为什么在block内部不能改变age的值?往下看 //
阅读全文
摘要:说明:阅读本文章,请参考之前的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)我们发
阅读全文

浙公网安备 33010602011771号