Objective-C 协议(protocol)模仿 'virtual-functions' 会产生编译器警告?

标签 objective-c polymorphism protocols virtual-functions

在 Objective-C 中,我想强制派生类实现给定的接口(interface),而不提供默认实现(父类中的实现)。

我知道协议(protocol)可以用于此目的,并且我相信我了解如何使用协议(protocol),但我显然错过了一些东西......

我定义了Parent类,并从parent派生了几个Child类。 所有子类都符合需要实现 myMethod 的协议(protocol)。

我想迭代 Child 实例,通过父类(super class) Parent 引用它们,并在每个实例上调用 myMethod。

编译器(毫不奇怪)警告 Parent 可能不会响应 myMethod。

所有证据表明,实际上每个派生的 Child 实例都会调用 myMethod,但我收到警告的事实让我感到不安,并表明我没有正确实现这一点。

我错过了什么?

谢谢

最佳答案

这不是协议(protocol)的使用方式。协议(protocol)没有实现的接口(interface)。如果一个类声称遵守协议(protocol)(正如您的父类显然所做的那样),它需要实现这些方法,否则您将收到警告。您想要做的是让所有实际实现该协议(protocol)的类声明它们符合该协议(protocol),而不是通过此父类名称来引用它们,而是将它们引用为 id<ProtocolNameHere> 。这声明它们是符合该协议(protocol)的对象。

关于Objective-C 协议(protocol)模仿 'virtual-functions' 会产生编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1435533/

相关文章:

objective-c - 尝试将 Swift 与 Obj C header 用于 Coda2 插件。获取错误 : Undefined symbols for architecture x86_64

objective-c - 如何读取字符串直到找到所选字符串?

c++ - 为什么对 `getNoise` 的调用使用基类实现而不是子类实现?

java - 动态构建器模式

ios - 解散和呈现 UIViewController 时的巨大延迟

ios - UICollectionViewCell 带有约束的动画

ios - 每天在本地通知iOS上在警报正文中设置随机消息的问题

C++ 从 parent 的 vector 中调用 child 的方法?

ios - 消除 Objective C 中委托(delegate)的重复代码

ios - Swift 协议(protocol)如何声明为通用一致性