IOS
文章平均质量分 88
guo405240393
这个作者很懒,什么都没留下…
展开
-
OC对象的本质与initIsa
先上结论:OC对象的本质是结构体,结构体内部是一个指针;1. 如何探究通常我们编写的OC代码,其底层都是 C/C++代码,所以 OC对象都会转换成 C/C++的某种数据结构。那么我们可以通过clang,将相关的OC文件编译成C/C++文件:clang -rewrite-objc main.m -o main.cpp2. 源码分析main.m文件源码:@interface Student : NSObject@property (nonatomic, copy) NSString原创 2021-06-15 22:05:33 · 141 阅读 · 1 评论 -
结构体内存分析
1. 什么是内存对齐看下面的小程序,理论上,int占4 byte,char占一个1 byte,那么将它们放到一个结构体中应该占4+1=5byte,但是实际上,通过运行程序得到的结果是8 byte,这就是内存对齐所导致的。struct Struct { int a; // 4 char b; // 1}struct4;NSLog(@"%lu",sizeof(struct4)); // 输出为 8计算机中内存空间都是按照 byte 划分的,从理论上讲似乎对任何类型的变量的访问可以原创 2021-06-09 14:43:17 · 568 阅读 · 1 评论 -
OC对象alloc分析
首先我们先看下alloc创建对象的一个整体流程图:1. 如何分析 alloc方法的执行流程1.1 通过符号断点分析首先我们在alloc方法调用的地方打上断点,待程序运行到改行时,按住 ctrl键,同时数遍点击 xcode底部的 Debug窗口的 step into即可进入。具体方法如下图所示:注意:一定要在程序运行到alloc方法的时候,在enable符号断点,否者程序运行时创建的类,会反复hit这个符号断点1.2 直接阅读汇编代码通过设置Always Show Disassembly阅读程原创 2021-06-06 01:30:43 · 229 阅读 · 1 评论 -
更新自己的cocoapods库
更新自己的cocoapods库修改XXXX.podspec文件中s.version的内容打tag,跟podspec文件中的s.version一致上传到Git,将包含配置好的 .podspec, 项目提交 Git验证.podspec文件pod spec lint xxxx.podspec --verbose发布pod trunk push xxxx.podspec...转载 2019-12-05 14:52:08 · 186 阅读 · 0 评论