码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2017-11-28 17:49:40      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:它的   别人   tom   btn   oid   log   with   nonatomic   property   

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

Protocol基本概念
  • Protocol翻译过来, 叫做”协议”,其作用就是用来声明一些方法;
Protocol(协议)的作用
  • 定义一套公用的接口(Public)
  • 委托代理(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理解及在代理模式中的使用

标签:它的   别人   tom   btn   oid   log   with   nonatomic   property   

原文地址:http://www.cnblogs.com/frankltf/p/7911133.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!