protocol的基本使用与代理设计模式的应用

来源:互联网 发布:数据库阻塞和死锁区别 编辑:程序博客网 时间:2024/05/17 02:56

protocol的基本使用

1,格式:

 @protocol 协议名称 <NSObject>

               协议内容

   @end

2,协议的使用,

@interface 类名 : 父类名 <协议名,协议名2>

@end

然后再.m方法中实现协议里声明的方法,当遵守多个协议时,多个协议以逗号隔开.

3,使用注意.

1,protocol就是用来声明方法,不能声明成员变量,也不能实现方法.

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

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

4,Protocol里的方法可以让任何类去实现,Protocol只是声明.

5,OC不能继承多个类,但是可以遵守多个协议.

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

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

4,Protocol中的关键字

@required和@optional是Protocol中的两个关键字.

@required修饰的方法声明是必须实现的,这个关键字也是默认的.

@optional修饰的方法声明可以不用实现.

5,Protocol的类型限制

1,给id类型的限制

使用id存储对象时,给对象类型的限制:   id<协议A> 变量名; 例:  就是需要给变量baomu传一个遵守协议<zhaogubabyProtocol>的对象.

2,给对象的限制

当对象类型遵守协议时,可以赋值的对象既要是同一个类型,又要遵守协议.

3,关联关系下,对象的类型的限制问题.

当一个类的对象是另一个类的成员变量时,需要遵守协议才能赋值.

6,Protocol的代理设计模式

1,代理模式的概念:传入的对象,代替当前类完成某个功能,称为代理.

利用协议实现代理模式的主要思路为:

1)定义一个协议,里面声明代理类需要实现的方法列表.

2)创建一个代理类,遵守上面的代理协议.

3)在需要代理的类中,定义一个对象类型为id且遵守代理协议的成员变量.

4)在需要代理的类中调用成员变量_delegate(代理)的方法,调用代理类的方法.

5)main.m或其他使用需要代理的类的文件中,为需要代理的类的成员变量(代理类)赋值.


0 0
原创粉丝点击