首页 > 代码库 > OC--代理

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];

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

 

OC--代理