博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC--代理
阅读量:4311 次
发布时间:2019-06-06

本文共 1370 字,大约阅读时间需要 4 分钟。

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

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

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

 分类:单例,

      代理/委托,

      工厂,

      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

你可能感兴趣的文章
btn按钮之间事件相互调用
查看>>
Entity Framework 4.3.1 级联删除
查看>>
codevs 1163:访问艺术馆
查看>>
冲刺Noip2017模拟赛3 解题报告——五十岚芒果酱
查看>>
并查集
查看>>
sessionStorage
查看>>
代码示例_进程
查看>>
Java中关键词之this,super的使用
查看>>
人工智能暑期课程实践项目——智能家居控制(一)
查看>>
前端数据可视化插件(二)图谱
查看>>
kafka web端管理工具 kafka-manager【转发】
查看>>
获取控制台窗口句柄GetConsoleWindow
查看>>
Linux下Qt+CUDA调试并运行
查看>>
51nod 1197 字符串的数量 V2(矩阵快速幂+数论?)
查看>>
OKMX6Q在ltib生成的rootfs基础上制作带QT库的根文件系统
查看>>
zabbix
查看>>
多线程基础
查看>>
完美解决 error C2220: warning treated as error - no ‘object’ file generated
查看>>
使用SQL*PLUS,构建完美excel或html输出
查看>>
SQL Server数据库笔记
查看>>