Protocol入门

参考:http://haoxiang.org/2011/08/ios-delegate-and-protocol/

介绍:

Protocol在iOS中就是协议,简单的理解就是一组函数的集合,这个集合中有分为必需实现的和可选实现的。一般来说,protocol会与delegate模式一同使用。说白了,一个protocol就是一组实现规范。

定义:

@protocol testProtocol   // 协议名称
@required                   // 必需实现的方法
-(void)getTheResult;
@optional                   // 可选实现的方法
-(void)running;
@end    

使用:

@interface GameProtocol : NSObject
@property id<testProtocol> delegate;  // 代理设置
-(void)runTheGame;
@end

@implementation GameProtocol
-(instancetype)init{

    self = [super init];

    [self addObserver:self forKeyPath:@"delegate" options:NSKeyValueObservingOptionNew| NSKeyValueObservingOptionOld context:@""];

    return self;

}

-(void)dealloc{

    if (self) {

        [self removeObserver:self forKeyPath:@"delegate"];  //要移除KVO,否则会出错

    }

}

-(void)runTheGame{

    [self.delegate getTheResult];

}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

    if ([keyPath isEqualToString:@"delegate"]) {

        [self runTheGame];

    }

}

@end

结合委托模式:

@interface ProtocolViewController ()<testProtocol>

@end

@implementation ProtocolViewController
#param mark - testProtocol协议
-(void)getTheResult{
    NSLog(@"%@",@"get the result");
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    GameProtocol *game = [[GameProtocol alloc]init];
    game.delegate = self;
    [game runTheGame];
}

输出结果:

2015-01-15 20:44:58.195 testDemo[10476:2067475] get the result
2015-01-15 20:44:58.196 testDemo[10476:2067475] get the result

总结:

协议就是一组规范,是对一组方法的封装,其他对象调用的时候,只需设置这个代理,然后在该对象中直接调用,这样的话这个对象就能很好的封装,具体的协议实现在调用这个对象的时候再具体实现,这样就能够做到逻辑的封装,与业务逻辑无关。

时间: 2024-12-19 00:36:24

Protocol入门的相关文章

google protocol 入门 demo

ubunbu系统下google protobuf的安装 说明: 使用protobuf时需要安装两部分: 第一部分为*.proto文件的编译器,它负责把定义的*.proto文件生成对应的c++类的.h和.cpp文件; 第二部分是protobuf的c++动态库(由protobuf的源码编译生成),该部分在生成链接生成可执行文件时需要使用到. 1. 安装编译google protobuf源文件时需要的依赖文件 sudo apt-get install autoconf automake libtool

Java使用Protocol Buffers入门四步骤

Protocol Buffers(简称protobuf)是谷歌的一项技术,用于将结构化的数据序列化.反序列化,经常用于网络传输. 这货实际上类似于XML生成和解析,但protobuf的效率高于XML,不过protobuf生成的是字节码,可读性比XML差.类似的还有json.Java的Serializable等. protobuf支持各种语言.本文以Java为例,简单介绍protobuf如何使用.其他语言使用方法类似. 首先需要下载: http://download.csdn.net/downlo

Google Protocol Buffers 入门

1. 前言 这篇入门教程是基于Java语言的,这篇文章我们将会: 创建一个.proto文件,在其内定义一些PB message 使用PB编译器 使用PB Java API 读写数据 这篇文章仅是入门手册,如果想深入学习及了解,可以参看: Protocol Buffer Language Guide, Java API Reference, Java Generated Code Guide, 以及Encoding Reference. 2. 为什么使用Protocol Buffers 接下来用“

Google Protocol Buffers 快速入门(带生成C#源码的方法)

Google Protocol Buffers是google出品的一个协议生成工具,特点就是跨平台,效率高,速度快,对我们自己的程序定义和使用私有协议很有帮助. Protocol Buffers入门:1.去 http://code.google.com/p/protobuf/downloads/list 下载一个源代码包和一个已编译好的二进制包2.找一个Proto示例代码,使用命令 protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbo

Google Protocol Buffer入门

简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件.他们用于 RPC 系统和持续数据存储系统. Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩展的序列化结构数据格

互联网协议入门(一)

转:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html 我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信.上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗? 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite).它们对电脑如何连接和组

Unity连Photon服务器入门详解

Photon是目前比较好用的游戏服务器.目前网上对于Photon的服务器讲解比较少,最近也对Photon做了初步的了解,做一个极其详细的入门. 首先就是得下载Photon咯 https://www.photonengine.com/en/OnPremise/Download 这个是服务器下载.(上传图片的功能崩溃了...) 这个服务器是有权限的,免费的有100人上限和30天免费,调试用的话,100人的还是很合算的. https://www.photonengine.com/en/OnPremis

dubbo学习(1)--简单的入门搭建实例

转载请注明源文出处:http://www.cnblogs.com/lighten/p/6828026.html 1 简介 dubbo是一个分布式服务框架,由阿里巴巴的工程师开发,致力于提供高性能和透明化的RPC远程服务调用.可惜的是该项目在2012年之后就没有再更新了,之后由当当基于dubbo开发了dubbox.这里对dubbo的入门构建进行简单的介绍.不涉及dubbo的运行机制,只是搭建过程,方便学习者快速构建项目,运行.熟悉该框架. dubbo提供了两种构建项目的方法.1.通过Spring容

Netty5快速入门及实例视频教程(整合Spring)

Netty5快速入门及实例视频教程+源码(整合Spring) https://pan.baidu.com/s/1pL8qF0J 01.传统的Socket分析02.NIO的代码分析03.对于NIO的一些疑惑04.Netty服务端HelloWorld入门05.Netty服务端入门补充06.Netty客户端入门07.如何构建一个多线程NIO系统08.Netty源码分析一09.Netty源码分析二10.Netty5服务端入门案例11.Netty5客户端入门案例12.单客户端多连接程序13.Netty学习