想要创建一个继承自 Class 和协议的自定义 class XY

Want to create a custom class XY that inherits from a Class and a Protocol

我想在 watchOS 3 中创建 AVAudioInputNode

如果我点击 AVAudioInputNode 的 JumpToDefinition,我会看到:

open class AVAudioInputNode : AVAudioIONode, AVAudioMixing {
}

为什么我无法创建具有相同样式的自定义 class?

我的 class 是:

open class xy : AVAudioIONode, AVAudioMixing {
}

错误是

Type xy does not conform to protocol "AvAudioMixing" and "AVAudioStereoMixing"

这意味着您需要遵守这两个协议,这意味着您需要应用这些协议要求的特定功能或属性。

例如,对于 UIViewController Class 上的 table 个视图,您使用 2 个协议:UITablewViewDelegate、UITableViewDataSource。为了符合这些协议,您需要使用此功能。

func tableView(_ tableView: UITableView, numberOfRowsInSection: Int) -> int {
return 1 
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  let cell = tablewView.dequehueReusableCell(withIdentifier: "weatherCell", for: indexPath)
  return cell
}

并分配其委托和数据源:

tableView.delegate = self
tableView.dataSource = self

在这 2 个协议 AVAudioIONode、AVAudioMixing 的特定情况下,您应该搜索哪些是您需要符合的必需功能。

考虑:

class XY : AVAudioIONode, AVAudioMixing { ... }

这意味着

  • 你低于classAVAudioIONode,而且

  • 您将遵守 AVAudioMixing protocol (i.e. that you'll implement the necessary AVAudioMixing methods/properties), as well as any protocols that AVAudioMixing inherits (e.g. AVAudioStereoMixing).

所以,你的错误告诉你,虽然你已经声明你的 class 将符合 AVAudioMixing(因此也符合 AVAudioStereoMixing),但你还没有实现了必要的方法和属性。编译器只是警告您,您尚未完成 XY 的实现以成功符合这些协议。