iOS 基础

102 阅读3分钟

1 Objective-C

1 Objective-C 的特性与理解

Objective-C 是一种面向对象的编程语言,在 C 语言的基础上添加了面向对象的特性。同时具有静态语言和动态语言的特性。

Objective-C 的特性包括: 

  1. 面向对象:支持封装、继承和多态。 
  2. 动态性:在运行时动态地修改类和对象的行为,如消息转发、动态方法解析。
  3. 消息传递:方法调用是通过消息传递来实现的,对象之间的通信是通过向对象发送消息来完成的。 
  4. 垃圾回收:最初使用手动内存管理,后来引入了自动引用计数(ARC)来简化内存管理,减少内存泄漏的可能性。 
  5. 扩展性:支持类别和协议,可以在不改变原始类定义的情况下为类添加新的方法和行为,实现更好的代码复用和扩展性。 

Objective-C 动态性: 

  1. 动态消息传递:方法调用是通过消息传递来实现的,对象间的通信是在运行时动态确定的。
  2. 动态类型:运行时再决定对象的类型(id类型),这为运行时类型检查和转换提供了便利。
  3. 动态绑定:基于动态类型,在运行时根据对象的实际类型来决定调用哪个方法。 
  4. 运行时库:Runtime 在运行时创建和修改类的结构、添加新方法等操作,支持类别、关联对象。
  5. 消息转发:允许程序在运行时动态处理未知消息,例如将消息转发给其他对象或者动态创建方法来处理消息。 

2 Objective-C 中是否支持垃圾回收机制 

在 Objective-C 和 Swift 中使用基于引用计数的内存管理方式。macOS 桌面系统使用的是基于引用计数的垃圾回收机制,在运行时动态进行周期性地扫描堆内存,检测不再被引用的对象并释放其占用的内存空间。

Java 使用了自动内存管理机制。垃圾回收器(GC)在运行时自动扫描和释放不再被引用的对象所占用的内存空间。 

3 Objective-C 协议的基本概念 

协议定义了一组方法的抽象接口,类似于其他编程语言中的接口(Interface)。

  1. 方法声明:只包含方法的声明,不包含方法的具体实现。
  2. 必须方法@required 关键字声明,默认类型。
  3. 可选方法@optional 关键字声明。

4 Objective-C 的类支持多重继承?怎样实现类似功能?

Objective-C 类只有单继承,不支持多重继承,即一个类不能直接继承自多个父类。

Objective-C 类可以实现多个接口,这种机制被称为接口多继承。通过实现多个接口,一个类可以获得多个接口定义的方法、属性和行为,从而达到类似多重继承的效果。

5 C 语言和 Objective-C 混合使用规范

  • 使用.m后缀的文件可以包含 Objective-C 和 C 代码
  • 使用.mm后缀的文件可以包含 Objective-C、C 和 C++ 代码
  • 使用.cpp后缀的文件应该只包含 C++ 代码,不应该包含 Objective-C 代码