OC中Protocol理解及在代理模式中的使用

Protocol基本概念
  • Protocol翻译过来, 叫做”协议”,其作用就是用来声明一些方法;
Protocol(协议)的作用
  • 定义一套公用的接口(Public)

    • @required:必须实现的方法,默认在@protocol里的方法都要求实现。
    • @optional:可选实现的方法(可以全部都不实现)
  • 委托代理(Delegate)传值

    • 它本身是一个设计模式,它的意思是委托别人去做某事。
    • 比如:两个类之间的传值,类A调用类B的方法,类B在执行过程中遇到问题通知类A,这时候我们需要用到代理(Delegate)。又比如:控制器(Controller)与控制器(Controller)之间的传值,从C1跳转到C2,再从C2返回到C1时需要通知C1更新UI或者是做其它的事情,这时候我们就用到了代理(Delegate)传值;
protocol和继承区别
  • 继承之后默认就有实现, 而protocol只有声明没有实现
  • 相同类型的类可以使用继承, 但是不同类型的类只能使用protocol
  • protocol可以用于存储方法的声明, 可以将多个类中共同的方法抽取出来, 以后让这些类遵守协议即可
运用实例
//1.定义协议类
#import <UIKit/UIKit.h>
@class XMGCartItem,XMGCartCellTableViewCell; @protocol XMGCartCellTableViewDelegate <NSObject> // 定义协议
-(void)winecelladdfun:(XMGCartCellTableViewCell *)cell; //协议方法
-(void)winecellreduesfun:(XMGCartCellTableViewCell *)cell;//协议方法 @end @interface XMGCartCellTableViewCell : UITableViewCell
@property(nonatomic,strong)XMGCartItem *winecell;
@property(nonatomic,weak)id<XMGCartCellTableViewDelegate>delegate; //协议属性
@end //2.协议类中何时调用协议方法
#import "XMGCartCellTableViewCell.h"
#import "XMGCartItem.h"
@interface XMGCartCellTableViewCell () @end @implementation XMGCartCellTableViewCell - (void)awakeFromNib {
[super awakeFromNib]; } - (IBAction)reducebtn:(UIButton *)sender {
//开始调用协议方法
if([self.delegate respondsToSelector:@selector(respondsToSelector:)]){
[self.delegate winecellreduesfun:self];
}
}
@end //3.某类遵守协议并实现协议
@interface XMGCartViewController () <XMGCartCellTableViewDelegate>
@end
//协议实现
#pragma XMGCartCellTableViewDelegate
-(void)winecelladdfun:(XMGCartCellTableViewCell *)cell
{
int totalmoney=self.totalmoney.text.intValue + cell.winecell.money.intValue;
self.totalmoney.text=[NSString stringWithFormat:@"%d",totalmoney];
}

ios--->OC中Protocol理解及在代理模式中的使用的更多相关文章

  1. Android开发中无处不在的设计模式——动态代理模式

    继续更新设计模式系列.写这个模式的主要原因是近期看到了动态代理的代码. 先来回想一下前5个模式: - Android开发中无处不在的设计模式--单例模式 - Android开发中无处不在的设计模式-- ...

  2. Java反射机制在代理模式中的使用

    代理模式的核心思路就是一个接口有两个子类,一个子类完成核心的业务操作,另一个子类完成与核心业务有关的辅助性操作. 代理模式分为静态代理模式和动态代理模式.  静态代理模式: //接口类 interfa ...

  3. ios category,protocol理解

    category: 向现有的类中增加方法,同时提供方法的实现,现有类不需要做任何改动. protocol:(相当于Java或C#中的接口interface,当很多类都要需要类似的方法,但是方法具体实现 ...

  4. oc学习之路----scrollView的代理模式

    右图是OC里面scrollView的代理的描述,从这里可以开出来,任何对象都可以作为scorllView的代理对象只要实现了UIScrollViewDelegate这个协议,为什么呢,原因要追究到UI ...

  5. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  6. JAVA静态代理模式(从现实生活角度理解代码原理)

    代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 代理模式说白了就是"真实对象"的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途. 在 ...

  7. 轻松理解 Java 静态代理/动态代理

    目录 什么是代理模式 定义 代理模式的主要角色 优点 缺点 静态代理 动态代理 JDK原生动态代理 例子 分析 小结 CGLIB动态代理 例子 分析 final类型 其他方案 尾声 理解Java动态代 ...

  8. JAVA动态代理模式(从现实生活角度理解代码原理)

    所谓动态代理,即通过代理类:Proxy的代理,接口和实现类之间可以不直接发生联系,而可以在运行期(Runtime)实现动态关联. java动态代理主要是使用java.lang.reflect包中的两个 ...

  9. Java中的代理模式

    代理模式在Java Web的框架中经常使用到.比如说在对数据库的访问中,核心功能是对数据库的增删改查,而连接数据库.处理事务等功能我们在开发中也要考虑到.所以我们将数据库的CRUD抽象到接口中,然后实 ...

随机推荐

  1. seek方法补充

    seek 默认模式是从文件的开始移动光标,一共有0.1.2三种模式 f=open('seek.txt','r',encoding='utf-8') print(f.tell()) f.seek(10, ...

  2. 洛谷p1345---最小割的奇妙运用

    让你去掉最少的点,使得c1和c2变得不连通,你有办法吗??? 这是最小割呀!!! 网络流的最小割去掉的是边,构造边的顶点的唯一关系就好了!!! 需要注意一点 #include<iostream& ...

  3. CSV 文件的存取

    CSV 文件介绍 CSV(Comma-Separated Values),中文通常叫做逗号分割值.CSV文件由任意数目的记录(行)组成,每条记录由一些字段(列)组成,字段之间通常以逗号分割,当然也可以 ...

  4. $Loj10157$ 皇宫看守 树形$DP$

    loj Description 有一些宫殿,它们呈树形结构,相邻的宫殿之间可以互相望见.在一些宫殿设立士兵,使得所有的宫殿都有士兵或是被士兵望见.求最小士兵数. Sol 状态: f[x][0] 表示结 ...

  5. 1066 图像过滤 (15分)C语言

    图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来.现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换. 输入格式: 输入在第一行给出一幅图像的分辨 ...

  6. 当Parallel遇上了DI - Spring并行数据聚合最佳实践

    分析淘宝PDP 让我们先看个图, Taobao的PDP(Product Detail Page)页. 打开Chrome Network面板, 让我们来看taobao是怎么加载这个页面数据的. 根据经验 ...

  7. PTC热敏电阻的应用

      PTC热敏电阻应用举例 PTC热敏电阻可用于计算机及其外部设备.移动电话.电池组.远程通讯和网络装备.变压器.工业控制设备.汽车及其它电子产品中,作为开关类的PTC陶瓷元件,具有开发功能.使电器设 ...

  8. 初级程序员如何一分钟?解决一个BUG

    博主说明 -- 重要.重要.重要的事情说三遍 写这篇文章是主要锻炼写博客的能力以及记录自己的成长经历,要是写的不对欢迎大佬评论指正,同时希望对大家有所帮助.然后我写博客尽量简洁+图片+宏观的方式,便于 ...

  9. Cesium本地影像与地形服务发布

    目录 1 数据切片 1.1 影像处理 1.2 地形处理 2 Web应用服务器安装与配置 2.1 Tomcat安装及配置 2.2 IIS安装及配置 3 本地影像与地形服务发布 4 参考资料 @(目录) ...

  10. arthas 使用指导

    arthas 阿尔萨斯 这种命令行的东西首先得知道 如何使用帮助,帮助文档最先开始用的,应该是可以在网上找到的官方文档 文档一:https://alibaba.github.io/arthas/ind ...