<5>内存管理--protocol
1. 作用:用来声明一大堆方法,但是不能声明成员变量
2. 只要某个类遵守了这个协议,就相当于拥有了这个协议里所有的方法声明(可以在类的.m文件就可以去实现这些方法)
3. 父类遵守某个协议就代表子类也遵守
4. : 是继承,<> 是遵守协议,() 是分类;继承是单继承,但是协议可以遵守多个协议
5. NSObject是一个基类,所有的类都遵守这个基类;同样也有一个基协议,也叫NSObject,所有的协议都要遵守这个协议;而且 NSObject类 遵守 NSObject协议(可以查看API文档)
6. // 定义一个协议
@protocol 协议名称 <NSObject> // NSObject是一个基协议,所有的协议最终都要遵守这个基协议
// 方法声明列表....
@end
7. // 如何遵守协议
1> // 类遵守协议
@interface 类名 : 父类名 <协议名称1, 协议名称2>
@end
2> // 协议遵守协议
@protocol 协议名称 <其他协议名称1, 其他协议名称2>
@end
8. 用两个关键字来控制方法是否需要实现,默认情况下是@required,在大多数情况下,用途是方便程序员之间的交流,利于合作开发
@required : 这个方法必
1. 作用:用来声明一大堆方法,但是不能声明成员变量
2. 只要某个类遵守了这个协议,就相当于拥有了这个协议里所有的方法声明(可以在类的.m文件就可以去实现这些方法)
3. 父类遵守某个协议就代表子类也遵守
4. : 是继承,<> 是遵守协议,() 是分类;继承是单继承,但是协议可以遵守多个协议
5. NSObject是一个基类,所有的类都遵守这个基类;同样也有一个基协议,也叫NSObject,所有的协议都要遵守这个协议;而且 NSObject类 遵守 NSObject协议(可以查看API文档)
6. // 定义一个协议
@protocol 协议名称 <NSObject> // NSObject是一个基协议,所有的协议最终都要遵守这个基协议
// 方法声明列表....
@end
7. // 如何遵守协议
1> // 类遵守协议
@interface 类名 : 父类名 <协议名称1, 协议名称2>
@end
2> // 协议遵守协议
@protocol 协议名称 <其他协议名称1, 其他协议名称2>
@end
8. 用两个关键字来控制方法是否需要实现,默认情况下是@required,在大多数情况下,用途是方便程序员之间的交流,利于合作开发
@required : 这个方法必