17、Objective-C编程:类别、协议与预处理器详解

Objective-C编程:类别、协议与预处理器详解

类别与协议

在Objective - C编程中,类别(Categories)和协议(Protocols)是两个重要的概念。

首先是类别,它可以为现有的类添加新的方法,而无需创建子类。例如,为 NSObject 类定义了一个名为 NSComparisonMethods 的非正式协议。非正式协议实际上只是一组方法的集合,它有助于方法的文档化和模块化。声明非正式协议的类本身并不实现这些方法,子类若要实现这些方法,需要在接口部分重新声明并实现其中一个或多个。与正式协议不同,编译器不会对非正式协议提供帮助,没有一致性检查或测试的概念。

如果一个对象采用了正式协议,那么它必须遵守协议中所有必需的消息,这在编译时和运行时都可以得到强制执行。而如果采用的是非正式协议,对象可能不需要采用协议中的所有方法,具体取决于协议。对非正式协议的遵守可以在运行时通过 respondsToSelector: 进行检查,但在编译时无法检查。需要注意的是,Objective - C 2.0语言中引入的 @optional 指令旨在取代非正式协议的使用,在一些 UIKit 类中可以看到这种应用。

接下来是复合对象(Composite Objects)。除了通过子类化和使用类别来扩展类的定义外,还可以定义一个由其他类的一个或多个对象组成的类,这样的对象被称为复合对象。以 Square 类为例,通常可以将其定义为 Rectangle 的子类,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值