黑马程序员------协议(Protocal)

来源:互联网 发布:北大生命科学知乎 编辑:程序博客网 时间:2024/05/27 21:49
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


1, 协议简介

  1.protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现。

  2.只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明。

  3.只要父类遵守了某个协议,那么子类也遵守。

  4.protocol声明的方法可以让任何类去实现,protocol就是协议。

  5.OC不能继承多个类(单继承)但是能够遵守多个协议。继承(:),遵守协议(< >

  6.基协议:<NSObject>是基协议,是最根本最基本的协议,其中声明了很多最基本的方法。

  7.协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一份协议中的方法声明。

2, 基本使用


//协议的声明
#import <foundation foundation.h="">
@protocol OneProtocol <nsobject>
//可以选择实现的方法:
@optional
-(void) optionalMethod1;
-(void) optionalMethod2;
//必须实现的方法:
@required
-(void) requiredMethod1;
@end
//采用协议(Test.h)
#import "OneProtocol.h"
@interface Test : NSObject<oneprotocol></oneprotocol></nsobject></foundation>



3,协议的定义

    @protocol 协议名称 <NSObject>

      //方法声明列表

    @end;

4,如何遵守协议

  (1)类遵守协议

    @protocol 类名:父类名 <协议名称1,协议名称2>

    @end

  (2)协议遵守协议

    @protocol 协议名称 <其他协议名称>

    @end;

5,协议方法声明中的关键字

  (1required (默认)要求实现,若没有实现则警告但不报错

  (2optional 不要求实现

6,定义变量时遵守协议的限制

    类名<协议名称> *变量名    NSObject<.Myprotocol> *obj;

    id  <协议名称>  变量名   id  <.Myprotocol> obj1;

7,property中声明的属性也可以遵守协议

    @property (nonatomic ,strong ) 类名<协议名称> *属性名;

    @property (nonatomic ,strong ) id<协议名称>  属性名;

-------------------------加油自己

 


0 0
原创粉丝点击