码迷,mamicode.com
首页 > 其他好文 > 详细

OC_协议代理

时间:2016-03-04 22:27:18      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

 

【协议/protocol】

———————————————————————————————————————

 <1>.   协议的定义

         在oc中是用来规范方法的声明,可以实现多继承或对象间通信的一种语法。

 

<2>.   协议的写法:

 

@protocol 协议名 <NSObject>

@required(缺省方法)

  //遵从协议的类必须实现的方法

 

@optional

      //遵从协议的类可选实现的方法

@end

 

【注】协议只有一个头文件,里面声明方法

 

 

<3>.  协议中声明的方法有两种权限:

@required:(缺省)必须的,即遵从协议的类,必须实现这个方法

@optional: 可选的,遵从协议的类,可以实现这个方法,也可以不实现。

 

 

<4>.  使用协议需要注意的问题

 

1.协议中只声明方法,不实现方法

2.遵从协议的类须导入协议头文件

3.协议中@required权限的方法必须实现

 

 

 

<5>.  遵从(conform)协议的类写法

@interface Dog : NSObject <EatProtocol, RunProtocol>

    //Dog类就遵从了协议,如果遵从多个协议(多继承),协议间用逗号隔开

 

【注】遵从协议的类会创建出遵从协议的对象

 

<6>.  持有协议的id指针写法

@property (weak) id<MyDelegate> delegate;

    //delegate是持有协议的id指针,只能调用协议中声明的方法

          //持有协议的id指针,只能指向遵从协议的对象

 

=================================

 

【代理/delegate】

———————————————————————————————————————

 <1>.   代理

            //协议的重要用处,一个是规范接口,一个是实现代理.

           //代理是实现两个类的对象间通信的一种机制。

         【委托方】主动方 持有带协议的id指针,可以使用协议。

     @property (weak) id<MyDelegate> delegate;

     //代理对象不使用strong,写weak,表示不retain,和普通变量一样直接赋值

//使用weak的原因:防止内存泄露

 

         【代理方】被动方 遵从协议,实现协议中的方法。         

 

      代理实现步骤:

第一步:制定协议

第二步:委托方 : 使用协议

第三步:代理方:实现协议

第四步:建立代理关系

 

 

<2>.  回调

//协议的另一个功能就是进行回调。

          当我们需要完成某个功能模块,但不知道使用功能模块的是哪个对象,通过协议,可以规定接收数据的对象通过哪个方法获得数据,调用该方法的过程称为【回调】。

 

         【委托方】主动方 遵从协议,实现方法。

         【代理方】被动方 持有带协议的id指针,可以使用协议。  

 

 回调过程:

1、委托方注册代理方对象,调用代理方实现功能;

2、代理方通过持有协议的id指针使用协议;

3、委托方实现协议。    

 

OC_协议代理

标签:

原文地址:http://www.cnblogs.com/yuhanchen/p/5243411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!