唐巧的博客

猿题库iOS客户端的技术细节(二):答题卡扫描算法

前言

本人今年主要在负责猿题库 iOS 客户端的开发,本文旨在通过分享猿题库 iOS 客户端开发过程中的技术细节,达到总结和交流的目的。

这是本技术分享系列文章的第二篇。本文涉及的技术细节是:答题卡扫描算法。

猿题库iOS客户端的技术细节(一):使用多target来构建大量相似App

前言

本人今年主要在负责猿题库 iOS 客户端的开发,本文旨在通过分享猿题库 iOS 客户端开发过程中的技术细节,达到总结和交流的目的。

这是本技术分享系列文章的第一篇。本文涉及的技术细节是:采用多 Target 编译方案来实现多个相似 App 的开发,以保证我们能够快速地推出多个相似课程的客户端。

Objective-C对象模型及应用

前言

原创文章,转载请注明出自 唐巧的技术博客

本文主要介绍 Objective-C 对象模型的实现细节,以及 Objective-C 语言对象模型中对isa swizzlingmethod swizzling的支持。希望本文能加深你对 Objective-C 对象的理解。

ISA 指针

Objective-C 是一门面向对象的编程语言。每一个对象都是一个类的实例。在 Objective-C 语言的内部,每一个对象都有一个名为 isa 的指针,指向该对象的类。每一个类描述了一系列它的实例的特点,包括成员变量的列表,成员函数的列表等。每一个对象都可以接受消息,而对象能够接收的消息列表是保存在它所对应的类中。

在 XCode 中按Shift + Command + O, 然后输入 NSObject.h 和 objc.h,可以打开 NSObject 的定义头文件,通过头文件我们可以看到,NSObject 就是一个包含 isa 指针的结构体,如下图所示: