iOS设计模式之代理

 以前刚学iOS的时候,也是半懂非懂的,之喜欢敲一些界面的东西.对于界面的交互,界面的传值,就看到就头疼,不知道怎么去随心所欲的写出需要传值的部分代码.我一直相信,遇到问题,解决问题,才能让我们真正成长.之前纯粹在学的时候,也许当时能照葫芦画瓢的写出,可是,却不了解,时间久了,什么和什么都是浆糊了.不过,iOS中代理还是很重要的,虽然现在block可以更简洁的实现代理的传值.不过,我想先理解代理,下篇文章在介绍block传值的实现.

 代理:我的理解是,最简单的,我想小时候,当我第一次听到,有克隆人的时候,我就不止一次的想过,要是他能代替我上学就好了.

 这里,我就是所谓的委托方,克隆人的我,就是我的代理.

 我想让他做的事,就是他成为代理的条件.(他必须要会我想让他帮我做的事儿,上学,不然我要他干嘛?嘿嘿,其实,上学还是很重要的.如果当时梦想成真了,今天也不会是我在写博客给大家了.)

那么这件事就是我需要代理(克隆人我)实现的方法.

那么我怎么才能让他实现呢?我需要类似于现实生活中公司直接的合作,需要写一份协议.在iOS中还需要写个协议指针,这个协议指针就是为了任意一个人能成为我的代理.(所谓的解耦合).


好,以上,有了,委托方的3要素:

在MEViewController.h中

1)写一份协议


  @protocol CloneMeViewControllerDelegate<NSObject>//1)这就是拟定的一份协议


2)写一个协议指针


-(void)iWantSomeBodyToGoToSchoolInsteadOfMeWithName:(NSString*)name;//2)拟定协议中约定好的方法


3)委托方想要代理(代替自己)实现的方法


@property (nonatomic,assign) id<CloneMeViewControllerDelegate>delegate;//3)这就是需要的协议指针.


     1):id,说明这个代理人,随便什么类型    

      2):delegate:其实这只是个名字,你写出张三,李四或者苏旋律都行.  

      3):这是代表这个指针遵守协议.



那么我代理怎么知道我需要帮人家实现什么呢?那就要遵守下人家给我写好的协议嘛.另外实现约定的方法.

好,以上,有了,代理方的2要素

在CloneMeViewController.h中

1)遵守委托方写的协议


@interface CloneMeViewController : UIViewController<CloneMeViewControllerDelegate>//这就是代理人遵守协议,说明他要成为Me的代理.

在CloneMeViewController.m中


2)实现协议中约定好的方法


-(void)iWantSomeBodyToGoToSchoolInsteadOfMeWithName:(NSString *)name

{

NSLog(@"show收到:%@的指令",name);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容