andyccc 
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  •   
  •   

Flutter Dart基础快速入门

Dart基础快速入门 image 声明:Flutter专栏文档均来自慕课网https://coding.imooc.com/class/321.html Dart基础知识 程序入口 控制台输出 变量 检查null或零 Functions 异步编程 Futures async 和 await 在本节中我们主要对标JavaScript来讲解Dart与JavaScript的异同,对JavaSc

2019-03-03

Flutter学习笔记

Flutter学习笔记新建项目**1、Flutter create xxxx ** 先用命令建好项目再到工具内,打开项目。这样比较快 声明:Flutter专栏文档均来自慕课网https://coding.imooc.com/class/321.html Flutter原理介绍(讲的比较透彻和全面的文章)https://juejin.im/entry/5afa9769518825428630a61c

2019-03-02

类的加载 - 类的扩展 & 分类关联对象

一、类扩展1、类扩展与分类category: 准用来给类添加新方法; 不能添加成员变量,即使添加了也无法取到; 属性可添加,但只会生成 setter/getter 的声明而没有相应的实现 –> 可通过 runtime 进行关联实现。 extension: 可看做匿名分类; 可以给类添加成员属性,但是私有的; 可以给类添加方法,也是私有的。 类扩展: 类的扩展

2018-10-31

类的加载 3 - 分类的加载

本文继续衔接 [OC 底层探索 14、类的加载 2]探索分类的加载。调试源码 一、分类的本质分类的结构查看方法1).cpp 文件在 main.m 中任意添加一个分类信息的 .h .m 文件信息,编译生成 cpp 文件 clang -rewrite-objc main.m -o main.cpp 如下 tu: category_t 结构: 123456781 struct _category_

2018-10-26

类的加载 2 - 类的 data_

本文衔接 OC 底层探索 13 继续探索类的加载,我们已知通过 readClass() 读取了编译器写的类 (or 元类),同时给 cls 赋了 name 和把 cls 插入到了类 / 元类的表中,此时 cls 不仅有了地址还有了 name。此时的类是什么样子的呢?我们读取一下 cls 的内存情况,见下图: 通过上面 lldb 调试,我们发现 cls 的 bits 是 0000,并无数据. 继续

2018-10-23

类的加载 1 - dyld 和 objc 的关联

本文开始探索类的加载。调试源码 objc 源码工程 _objc_init 函数: 12345678910111213141516171819202122231 /*********************************************************************** 2 * _objc_init 3 * Bootstrap initialization. Re

2018-10-18

应用程序加载

方法等是如何加载到内存中的呢,或者说类的加载都做了什么?在此之前,我们先探索 APP 从响应用户点击到完全启动的过程 即 应用程序加载 都做了什么事情。 首先我们准备一个 iOS 的 APP 工程,ViewController.m 中添加 load 方法,main.m 中添加一个 C++ 的 方法,代码如下图: 执行流程: load –> C++ –>  main() . 为何 l

2018-10-12

objc_msgSend 流程 3 - 动态方法决议 & 消息转发

我们已经知道 objc_msgSend 的消息查找流程首先是 缓存 cache 查找,然后是去方法列表递归查找,若一直没有找到消息一般则会 crash 报错找不到该消息。 但是直接 crash 太过不友好,下面就进行探究苹果给我们的 3 次机会。 消息处理的流程图: 一、动态方法决议1、通过简单代码切入简单运行下面代码 运行崩溃: 在 MyPerson.m 中添加 resolveInstanc

2018-10-09

objc_msgSend 流程 2 - 慢速查找

我们已经知道消息发送流程首先会走到缓存 cache 里面,那么当缓存中没有查询到消息时 __objc_msgSend_uncached,后续怎么继续执行呢? 一、切入口__objc_msgSend_uncached –> MethodTableLookup –> _lookUpImpOrForward. 我们通过源码可以看到缓存中找不到会进入 _lookUpImpOrForward 的

2018-09-28

objc_msgSend 流程 1 - 缓存查找

本文对 Runtime 进行简单介绍 和对 objc_msgSend 的发消息流程中的缓存查找进行探索。 更新 (流程图概览):缓存查找流程图 我们知道类结构中包含了很多信息:isa superclass cache bits,cache 中缓存了我们调用的方法,具体流程见 OC 底层探索 07. 但是方法具体时间什么时候缓存的,需要继续探究。 源码 objc_cache.mm 文件,Metho

2018-09-26
1…7891011…14

搜索

Hexo Fluid