Lazy loaded image
🌗OC中的面向对象
Words 1073Read Time 3 min
2025-1-15
2025-4-30
type
status
date
slug
summary
tags
category
icon
password

1. 类的定义格式

头文件(.h)

实现文件(.m)

 

2. Extension(类扩展)

在Objective-C中,我们可以在.m文件中使用Extension(也称为私有类扩展)来声明一些私有属性和方法。这种方式有以下特点:
  • .h文件中的interface: 用于声明公开的属性和方法,其他类可以访问这些内容
  • .m文件中的interface: 使用空括号@interface Person() 定义私有属性和方法,这些内容只能在类的内部使用
这种设计模式有助于实现封装性,让类的实现细节对外部保持私密性,同时保持公开接口的简洁。
 
 

3. 关键概念解释

属性修饰符

  • 原子性:
    • atomic - 默认值,线程安全但性能较差
    • nonatomic - 非原子性,性能更好
  • 内存管理:
    • strong - 强引用,用于OC对象
    • weak - 弱引用,避免循环引用
    • assign - 用于基本数据类型
    • copy - 复制对象
  • 读写权限:
    • readwrite - 默认值,可读可写
    • readonly - 只读属性
 

4. 方法定义与使用

实例方法

以减号(-)开头定义,属于具体的对象实例。实例方法只能通过实例对象来调用,可以直接访问对象的属性和其他实例方法。

类方法

以加号(+)开头定义,属于类本身。类方法可以直接通过类名调用,无需创建实例,但不能直接访问实例变量。常用于工具方法或创建实例的工厂方法。
类比理解:如果把类比作图书馆,那么:
  • 实例方法就像图书管理员的具体工作(如整理书籍、借还书等),需要有一位管理员在岗才能执行
  • 类方法就像图书馆的规章制度(如开放时间、借书规则等),不需要管理员在场也能知道和执行

5. 类的继承

6. 协议(Protocol)定义

协议(Protocol)是Objective-C中定义一组方法的方式,类似于其他语言中的接口(Interface)概念。协议定义了一组方法声明,但不包含具体实现。主要特点包括:
  • @required 方法: 采用该协议的类必须实现这些方法,否则编译器会发出警告
  • @optional 方法: 可选方法,类可以选择是否实现这些方法
协议的使用场景:
  • 定义代理(Delegate)模式时,用于实现对象之间的通信
  • 确保类实现特定的功能接口
  • 实现多继承的效果,因为OC只支持单继承
在使用协议时,通常需要在实现类中检查可选方法是否可用:
 

7. 类别(Category)定义

以上就是Objective-C中面向对象编程的主要组成部分。在实际开发中,需要根据具体需求选择合适的特性来构建应用程序。
上一篇
Protocol 与 Delegate
下一篇
可组装架构TCA (The Composable Architecture)