我刚接触Objective C,想更清楚地了解protocol
的概念。
@protocol protocolName
@optional
@required
@end
我可以把@optional
部分与C++中的虚函数相关联,将@required
部分与纯虚函数相关联吗?
@protocol
是Objective-C创建接口和抽象类的方式吗?
我刚接触Objective C,想更清楚地了解protocol
的概念。
@protocol protocolName
@optional
@required
@end
我可以把@optional
部分与C++中的虚函数相关联,将@required
部分与纯虚函数相关联吗?
@protocol
是Objective-C创建接口和抽象类的方式吗?
@protocol是Objective-C创建接口和抽象类的一种方式,对吗?
没错。
我能将@optional部分与C++中的虚函数联系起来,将@required部分与C++中的纯虚函数联系起来吗?
可以,但有一个区别 - 如果classA没有实现OptionalProtocolMethodB,则尝试调用[classA OptionalProtocolMethodB]将导致运行时异常。在C ++中调用虚函数不会导致这种情况。
在调用可选方法之前,应检查类是否实现了该方法。例如:
if ([_delegate respondsToSelector:@selector(didUploadedTotalBytes: totalBytesExpectedToWrite:)]) {
[_delegate didUploadedTotalBytes:_uploadedBytes totalBytesExpectedToWrite:_totalBytes];
}