iOS 协议
来源:互联网 发布:雪山白凤凰知乎 编辑:程序博客网 时间:2024/05/28 11:50
Objective-C的协议等同于Java中接口的概念。下面我们来讨论协议的声明:
@protocol NSCopying
-(id)copyWithZone: (NSZone∗)zone;...
@end
协议看起来就像类别的声明,还是一堆方法声明的集合。但@protocol 关键字的出现说明了这是一份正式协议。
正式协议的意思是,每个采用(Java 中用实现implements这个词)这份协议的类必须实现这份协议中的所有方法。这种说法一直持续到Objective-C 2.0。
从 Objective-C 2.0开始,协议中的方法可以有选择地由类实现。对于需要实现的方法,使用@required 关键字修饰,对于可选择性地实现的方法,使用@optional 关键字修饰,比如:
@protocol TheProtocol
@required
-(void)firstMethod;-(void)secondMethod;
@optional
-(void)thirdMethod;
@end
这个协议规定,第 1、2 个方法是必须实现的,而第3个方法可以实现,但不要求一定实现。如果一个类要采用(或实现)这个协议,则需要在@interface 中这样声明:
@interface MyClass:NSobject<TheProtocol>
而 MyClass类的实现中,则应当实现该协议规定的2个必选方法及1个可选的方法。除了正式协议外,我们也可以采用非正式协议。非正式协议不需要采用@protocol 关键字
声明,但需要创建一个类别,例如MyCategory:
@interface NSObject(MyCategory)-(void)doSomething;
...
@end
由于 NSObject是所有Cocoa类的根类,这个类别实际上指明了任何类都可以实现这些方法。从而可以向任何对象发送这些消息,而不需要在类的声明中做任何特别的说明。
- iOS 协议
- IOS协议
- IOS-协议
- iOS协议
- iOS-协议
- IOS 协议
- iOS协议
- IOS协议
- iOS 协议
- ios协议
- iOS网络协议--HTTP协议
- ios委托与协议
- iOS 自定义协议
- ios 正式协议protocol
- ios协议和委托
- ios正式协议
- IOS 自定义协议
- iOS 类目,延展,协议
- AIX子系统、子服务、系统组
- Hibernate工作原理及为什么要用?
- 9.2
- 剑指offer第4题 空格替换
- Java序列化的作用和反序列化
- iOS 协议
- MyISAM InnoDB 区别
- Frankenstein——3
- Weka开发[18]——寻找K个邻居
- mysql存储方式的区别
- 关于(++a)+(++a)
- DrectX托管net4版本异常
- Kinect测量身高
- C语言快速交换2数字