OC--代理

设计模式:简单的说就是设计模板。前人预先已经设计好的程序代码(模板),我们只要按照它的要求方式进行编码,就可以实现相应的功能。

 作用:提供了一种模板,功能实现起来更加的简单。

 ------------代理(委托)------------

 分类:单例,

      代理/委托,

      工厂,

      kvc(key-value coding(键值编码)),

      观察者(kvo(key-value observing(键值观察),通知),

      MVC(model-view-controller(模型-视图-控制器)

 代理:也叫委托

 定义:A类有一件事情要做,但是自己不想做,让B类帮忙实现。(注意:B类不是固定的某个类,只要能帮我做这件事件的类都可以)

------ 实例:找房子

 因素:我们 (Student)(A类)

      帮我们找房子的人(代理/中介/第三人) (B类)

  @protocol StudentDelegate <NSObject>  1、定义协议

  -(void)findHouse;

  @end

   @interface Student :NSObject  {

  @property id<StudentDelegate>delegate;  2、声明一个遵循代理带对象  和 找代理的方法

  }

  -(void)findHelp;

  @end

3、在主类中实现找代理的方法 

  -(void)findHelp{

      //以后,如果给成员变量写了setter(set),getter(get)方法,就尽量使用点语法

      //容错处理

      if ([self.delegate respondsToSelector:@selector(findHouse)]) {

          //任意对象找房子

          [self.delegate performSelector:@selector(findHouse)];

      }else{

          NSLog(@"它不能给我找房子");    }}

 4、被动类引进协议并饮用协议

  #import "Student.h"

  @interface Agency : NSObject<StudentDelegate>{

  @property Student *student;

  //代理类的工作

  -(void)agencyWork;

  @end

5、实现被动类的方法

  

  -(void)agencyWork{

      //创建学生类对象

      self.student = [[Student alloc]init];

      //通过self将代理类设置成student的delegate对象   *************

      self.student.delegate = self;

      //学生找帮助

      [self.student findHelp]; }}

6、main中 

   Agency *myAgency = [[Agency alloc] init];  

        //代理去工作

        [myAgency agencyWork];

 ---------------堆栈----------

 

转载于:https://www.cnblogs.com/wscd/p/4178777.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值