load 方法全程跟踪

发布在 Objective-C

load方法的调用时机

我们都知道,每个类都有两个初始化方法,其中一个就是load方法,对于每一个ClassCategory来说,必定会调用此方法,而且仅调用一次。当包含ClassCategory的程序被库载入系统时,就会执行此方法,并且此过程通常是在程序启动的时候执行。

不同的是,现在iOS系统中已经加入了动态加载特性,这是从macOS应用程序中迁移而来的特性,等应用程序启动好之后再去加载程序库。如果Class和其Category中都重写了load方法,则先调用Class中的。那么为什么会先调用Classload方法呢?通过这篇文章想必你会有个答案。

阅读全文

前面几篇基本介绍了runtime中的大部分功能,包括对类与对象、成员变量与属性、方法与消息、分类与协议的处理。runtime大部分的功能都是围绕这几点来实现的。

本章的内容并不算重点,主要针对前文中对Objective-C Runtime Reference内容遗漏的地方做些补充。当然这并不能包含所有的内容。runtime还有许多内容。

阅读全文

Objective-C中的分类允许我们通过一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以做到。

Objective-C中的协议是普遍存在的接口定义方式,即在一个类中通过@protocol定义接口,在另外类中实现接口,这种接口定义方式也成为“delegation”模式,@protocol声明了可以被其他任何类实现的方法,协议仅仅是定义一个接口,而由其他的类去负责实现。

在本章中,我们来看看runtime对分类与协议的支持。

阅读全文

前面我们讨论了Runtime中对类和对象的处理,及对成员变量与属性的处理。这一章,我们就要开始讨论Runtime中最有意思的一部分:消息处理机制。我们将详细讨论消息的发送及消息的转发。不过在讨论消息之前,我们先来了解一下与方法相关的一些内容。

阅读全文

在前面一篇文章中,我们介绍了Runtime中与类和对象相关的内容,从这章开始,我们将讨论类实现细节相关的内容,主要包括类中成员变量,属性,方法,协议与分类的实现。

本章的主要内容将聚集在Runtime对成员变量与属性的处理。在讨论之前,我们先介绍一个重要的概念:类型编码。

阅读全文

Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具有灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。

这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于Objective-C来说,这个运行时系统就像一个操作系统一样,让它所有的工作可以正常运行。这个运行时系统即Objc RuntimeObjc Runtime其实就是一个Runtime库,它基本上是用C和汇编写的,这个库使得C语言有了面向对象的能力。

阅读全文
  • 第 1 页 共 1 页
Copyrights © 2019 贵永冬. All Rights Reserved.
作者的图片

贵永冬

iOS开发者
会一点RN和android, 十足的海贼迷


河南信悦通网络科技有限公司


河南 郑州