xcode - 你怎么知道一个 Swift 类是从另一个类继承还是符合协议(protocol)?

标签 xcode swift

例如,如果我们有一个继承自 Bar 类的 Foo 类,并且符合 Baz 协议(protocol):

class Bar {}

protocol Baz {}

Foo 类:Bar、Baz {}

如果我们事先不知道 Bar 是一个类而 Baz 是一个协议(protocol)怎么办(例如,当阅读别人的代码时)。 在这种情况下,由于在 class Foo: 之后有多个声明,它可能很清楚。在 Swift 中,协议(protocol)一致性声明必须在继承子句中的父类(super class)声明之后。另一方面,这也可以是一个符合多种协议(protocol)的没有继承的类。

还有如果继承子句中只有一个声明怎么办?

class Foo: Bar {}

或者:

class Foo: Baz {}

在 Objective-C 中,很清楚,因为协议(protocol)名称被尖括号包围。在 Swift 中,尖括号用于泛型。对于这种情况,是否有语法支持使协议(protocol)一致性在视觉上更加明确?

最佳答案

Swift 处理协议(protocol)的方式与处理类型的方式大体相同。这是设计使然,其后果之一是在许多情况下难以立即区分协议(protocol)一致性和类继承。

这是积极的还是消极的事情是一个见仁见智的问题,有待讨论。因此,我不会解决它。

更多实践方面:

识别给定关键字是指 Protocol 还是 Class 的最快方法是 option-click 关键字。以下是每种情况下这样做的结果:

class protocol

当然,这只有在您阅读 Xcode 上的代码时才有意义。

关于xcode - 你怎么知道一个 Swift 类是从另一个类继承还是符合协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24575918/

相关文章:

xcode - MKDirections 许多请求停止工作

xcode - Interface Builder 文件中的未知类。 Xcode 6 和 swift

ios - UIBezierPath 弧线创建具有圆角和间距的饼图

iphone - 使用多个对象对 NSMutableArray/Dictionary 进行排序

ios - Xcode 5 升级 - 现在 nsobject.h 有错误重复类 'NSObject' 的接口(interface)定义

ios - 测试时禁用断言

ios - UISegmentedControl : reverse tintColor and backgroundColor

xcode - Swift 中的默认值参数是什么?

ios - UIWebView动态高度

ios - 将 TableView 点击位置转换为单元格 View 位置