《Objective-c程序设计(第六版)》读书笔记(十)分类和协议

1. 分类提供一种简单的方式,用来扩展现有类而不必访问类的源代码,也无需创建子类。
@interface Fraction(MathOps)
//扩展的方法声明
@end
@implementation Fraction(MathOps)
//扩展方法的实现
@end

2. 类的扩展,未命名分类,可以定义额外的实例变量和属性,并且它们是私有的,这在命名的分类中是不允许的。
@interface Fraction()
//定义私有的实例变量和属性、方法
@end

3. 协议定义一组相关的方法,可以供多个类共享。协议的定义
@protocol MyProtocol<BaseProtocol>
@optional
//可选实现的方法声明
@required
//必须实现的方法声明
@end
实现协议:
@interface Fraction<NSCopy,MyProtocol>
@end
如果不想公开类实现了某个协议,可以在类扩展中实现协议,如:
@interface Fraction()<NSCopy>
@end

4. 非正式协议,实际上是一个分类,列出一组方法并没有实现他们。