程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规...
程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规...
OC 常用的约束框架是Masonry,而swift常用的是SnapKit,不过今天就只看看Masonry。 先看个例子: 源码 首先来看mas_makeConstraints...
最近项目需要添加刷新交互,想着参考一下别人的源码再封装,然后就找了MJRefresh,然后记录下。 原理: 在UIScrollView可滚动区域的顶部上方或底部下方加一个UI...
最近项目需要添加轮播图,想着参考一下别人的源码再封装,然后就找了SDCycleScrollView,然后记录下。 SDCycleScrollView需要展示图片所以依赖了SD...
最近项目需要添加提示控件(HUD),想着参考一下别人的源码再封装,然后就找了MBProgressHUD,然后记录下。 框架使用起来很简单: 源码 MBProgressHUD就...
概念 Mach-O是一种文件格式,是mac上可执行文件的格式。编写的C、C++、swift、OC,最终编译链接生成Mach-O可执行文件。链接的共用库分为静态库和动态库:静态...
接着上篇文章(系统底层源码分析(18)——objc_msgSend[https://www.jianshu.com/p/e8aec5103a97])继续说: 报错 之前说到调...
当我们调用方法时,进入汇编模式可以发现,底层其实会调用objc_msgSend进行快速查找,这个方法是用汇编写的,详请我们就不看了,就主要看流程:1.对接受者进行判空处理:检...
上篇文章探究了类的结构[https://www.jianshu.com/p/19871b14f121],其中提到cache,今天就来探究一下。 结构 作用 从结构可以看出ca...
类的本质其实也是结构体: objc_class继承了objc_object,所以类其实也是一个对象。类在内存里只存在一份, 继承关系只存在于类之间, 而不存在于对象之间。 了...
首先简单创建项目,调用alloc并断点: 然后进入汇编模式运行(Debug -> Debug Workflow -> Always Show Disassembly): 我们...
联合体 前面提到isa关联了类,那么isa是什么?isa的本质是联合体: 关联 它是怎么关联类的,比如Person继承NSObject,Person就需要关联到NSObjec...
我们写一段代码,然后编译成cpp文件: 将.m文件由 OC 转 C++ 源码方法如下:打开终端,执行 cd 文件所在目录 命令,然后执行 clang -rewrite...
上上篇:系统底层源码分析(11)——alloc、init、new[https://www.jianshu.com/p/cf28dd814f79]上一篇:系统底层源码分析(12...
上一篇:系统底层源码分析(11)——alloc、init、new[https://www.jianshu.com/p/cf28dd814f79]下一篇:系统底层源码分析(13...
我们知道alloc、init、new就是开辟内存空间初始化对象,今天就来探讨一下它们分别在底层干了什么。 一. alloc 首先简单创建项目,调用alloc并断点: 然后进入...
一、事件分类事件是发送到应用程序用于通知用户操作的对象。 在iOS中,事件可以采取多种形式:多点触摸事件,运动事件和用于控制多媒体的事件。 这最后一种类型的事件被称为遥控事件...
在了解Cabbage之前可以查看github上的文档[https://github.com/VideoFlint/Cabbage/wiki/%E4%B8%AD%E6%96%8...
在上篇文章Graver绘制[https://www.jianshu.com/p/6f0a684b8895]中,我们知道了Graver把复杂的界面变成了图片,那局部怎么交互呢?...
之前了解了CALayer和YYAsyncLayer,在这基础上来了解一下Graver。简单来说就是异步绘制图片代替复杂的界面。 Graver 是什么Graver 是一款高效的...