iOS 中的 +initialize 方法

在 iOS 中,经常与 +load 相提并论的一个方法便是 +initialize。从方法名来看,它的作用是进行初始化,但不同于平时使用的 init,+initialize 是一个类方法。那么它的本质到底是什么呢?
Read more →

iOS 中的 +load 方法

在 iOS 开发中,我们经常会使用 +load 方法来做一些在 main 函数之前的操作,比如方法交换(Method Swizzle)等。那么 +load 到底是如何被调用的呢?
Read more →

iOS 中的 Category

iOS 中的 Category 中文常译作分类、类别。我们经常会使用 Category 来对一个类进行扩展,使得在不破坏主类结构的同时可以具备更多的功能;也可以使用 Category 对一个类进行拆分,使得其结构更加清晰条理。本文将从 What - How - Why 谈谈 iOS 中 Category。
Read more →

Obj-C & Swift 的类型内省与反射

许多编程语言中都有类型内省(又称自省,Introspection)和反射(Reflection)这两个概念,本文将探讨一下 Obj-C 和 Swift 中类型内省和反射的相关概念与具体使用。
Read more →

Xcode 中的 Link Map 文件

Link Map File,译作链接映射文件。Xcode 在构建可执行文件之前,需要先编译为目标文件(Object File),并链接所需要的其他库,那么 Link Map 文件就记录了链接器(Linker)在链接过程中产生的一些信息,本文将谈谈这个文件的构成。
Read more →

Obj-C 中实例变量和类的访问控制

Obj-C 中的实例变量,即 Instance Variables,简称为 ivar。在面向对象的概念中,一个类的对外暴露决定了其所提供的能力,对子类则需要提供一定的扩展性,但有些时候我们不希望外界甚至子类知道一些细节,这时就用到了访问控制(Access Control)。在 C++、Java、Swift 等大多数高级语言中都有这样的概念,这次就来谈谈 Obj-C 中实例变量和类的访问控制。
Read more →

iOS 中的 KVC

KVC,即 Key-Value Coding,译作键值编码。当对象兼容 KVC 时,可以通过统一的 API 访问对象中某个键对应的属性值。Cocoa 中的许多功能都依赖 KVC,比如,KVO、Cocoa 绑定机制、Core Data、以及 AppleScript 等。
Read more →

Obj-C 中的重载与重写

重载(Overload)和重写(Override)是面向对象语言中十分基本的两个概念,本文将谈谈 Obj-C 中的重载与重写。
Read more →

Obj-C 中的对象

Obj-C 中的对象,主要有三种,实例对象(Instance Object)、类对象(Class Object)、以及元类对象(Meta-class Object)。
Read more →

iOS 中的 KVO

KVO 即 Key-Value Observing,译作键值监听,通常用于监听对象的某个特定属性值的变化。本文将由浅入深,谈谈 iOS 中的 KVO。
Read more →