协议的做用相似地C++中对抽象基类的多重继承。相似于Java中的接口(interface)的概念。
协议是多个类共享方法的列表,协议中列出的方法在本类中并无相应实现,而是别的类来实现这些方法。ui
若是一个类要遵照一个协议,该类就必须实现特定协议的全部方法(可选方法除外).spa
定义一个协议须要使用@protocol指令,紧跟着的是协议名称,而后就能够声明一些方法,在指令@end以前的全部方法的声明都是协议的一部分。以下:
.net
若是你的类决定遵照NSCopying协议,则必须实现copyWithZone方法。经过在@interface中的一对尖括号内列出协议的名称,告诉编译你正在遵照一个协议,好比:
@interface Test:NSObject <NSCopying>
blog
实例:
Fly.h
继承
FlyTest.h
接口
FlyTest.m
ip
test.m
get
程序运行结果以下:
string
go
stop
it
@protocol的标准语法是:
@protocol 协议名<其它协议, …>
方法声明1
@optional
方法声明2
@required
方法声明3
…
@end
@optional代表该协议的类并不必定要实现方法。
@required是必需要实现的方法。