gpt4 book ai didi

c++ - C++ 和 Objective C 中的多态性

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:21 26 4
gpt4 key购买 nike

我是 Objective C 的新手,我想更清楚地理解 protocol 的概念。

@protocol protocolName

@optional

@required

@end

我可以将 @optional 部分与 virtual function@required 部分与 C++ 的 pure virtual function 相关联吗?

@protocol是Objective-C创建接口(interface)抽象类的方式吗?

最佳答案

Is @protocol is way of Objective-C to create interface and abstract class?

没错。

Can I correlate @optional part with virtual function and @required part with pure virtual function of C++?

是的,你可以,但有一个区别——如果 classA 没有实现 OptionalProtocolMethodB,任何调用 [classA OptionalProtocolMethodB] 的尝试都会导致运行时异常。在 C++ 中调用虚函数不会。

您应该在调用之前检查该类是否实现了可选方法。示例:

if ([_delegate respondsToSelector:@selector(didUploadedTotalBytes: totalBytesExpectedToWrite:)]) {
[_delegate didUploadedTotalBytes:_uploadedBytes totalBytesExpectedToWrite:_totalBytes];
}

关于c++ - C++ 和 Objective C 中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23017392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com