我已经阅读了文档,但仍然感到困惑。请问有人可以解释一下什么是协议吗?(你可以给出代码示例,但我真的想要一个解释)
这里有一篇很棒的文章。在Objective-C中,协议与Java中的接口或C++中的纯虚类非常相似(尽管不完全相同,因为纯虚类可以具有数据成员...)。它基本上是确保特定类知道如何响应给定集合的方法(消息)的保证。
编辑:原始文章已经消失,我已经替换成了一个不同的教程。
协议是定义一个类所实现的必选和/或可选方法列表的方式。如果一个类采用一个协议,它必须实现采用的所有协议中的必选方法。 Cocoa使用协议通过Objective-C消息支持进程间通信。此外,由于Objective-C不支持多继承,您可以通过协议实现类似的功能,因为一个类可以采用多个协议。
一个很好的协议示例是NSCoding,它有两种必选方法必须由一个类来实现。该协议用于使类能够被编码和解码,也就是将对象存档写入永久存储器中。
@protocol NSCoding
-(void)encodeWithCoder:(NSCoder *)aCoder;
-(id)initWithCoder:(NSCoder *)aDecoder;
@end
@interface SomeClass : NSObject <NSCoding>
{
some variables
}
@protocol Hello
- (BOOL)send:(id)data;
- (id)received;
@optional
- (int)progress;
@end
{
some declaration
}
// 实现 @implementation AnotherClass
- (BOOL)send:(id)data
{
some declaration
}
- (id)received
{
some code
}
// 可选的方法
- (int)progress
{
some code
}
@end