黑马程序员__protocol协议

来源:互联网 发布:template web.js api 编辑:程序博客网 时间:2024/06/05 08:40

 ------- IOS培训android培训、期待与您交流! ----------

      protocol用来声明一大堆方法,(但是不声明成员变量)

    只要某一个类遵守了这个协议,那么这个类就拥有了协议里的所有的方法。

协议protocol与分类一样不能声明属性,但是不同的是分类是给某个类扩展一些方法,但是只要一个类遵守了协议protocol就可以拥有协议中的所有的方法,

遵守协议的方式是用<>如下:

@interface Person : NSObject <Myprotocol>


protocol的方法声明有两种@required和@optional

这两个关键字主要用来程序员之间的交流,告诉别人哪些方法是必须是实现的。

@protocol Myprotocol//@required关键字声明的方法要求必须实现,没有实现就会出现警告@required- (void)test;//可以选择实现的方法@optional- (void)test2;@end

如果一个类的父类遵守了协议,那么这个类也遵守了协议。

一个类虽然只能是单继承,但是一个类可以遵守多个协议如下

@interface Person : NSObject <Myprotocol,protocol2>

协议遵守协议

一个协议可以遵守多个其他协议,协议之间用逗号隔开

一个协议遵守了其他协议,就相当于拥有其他协议中声明的方法

@protocol 协议 <协议1,协议2>


基协议是一个基类,所有的其它的类都遵守这个类。其实还有一个协议,叫做NSobject,它是一个基协议,最根本的基协议。

NSobject协议中声明了很多最基本的方法,如-description,retain,release等

建议每一个协议都遵守基协议


协议使用的主要场合:代理模式和观察者模式

也可以使用protocol协议限制对象类型

NSobject<Myprotocol> * obj;

这样限制了只能是遵守Myprotocol协议的对象才能赋值给obj指针。


协议也可以像类一样声明使用@protocol myProtocol ,但是在要在.M文件中#import协议的头文件。

协议也可以不单独定义在一个单独的文件里,可以和某一个类的头文件中一块定义。当只有一个类才遵守某一个协议的时候,这时候这个协议和类的头文件放在一块 。当一个协议需要多个类去遵守的时候,才将协议声明在一个单独的文件里。


 




0 0
原创粉丝点击