gpt4 book ai didi

ios - 委托(delegate)方法必须公开

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:48 26 4
gpt4 key购买 nike

假设我有一个类

public class MyClass: NSObject, ABCDelegate {
func delegateMethod(a: a, b: b) {
...
}
}

此委托(delegate)方法由 MyClass 中处理某些网络操作的单例调用。

问题是编译器提示 Method 'delegateMethod(...)' must be declared public because it matches a requirement in public protocol 'ABCDelegate'

我的问题是:

  1. 为什么编译器会提示方法被声明为 private func 或简单地 func
  2. 如何将 ABCDelegate 方法声明为此类的私有(private)方法?

最佳答案

如果ABCDelegate被声明为public,而采用它的MyClass也被声明为public,那么ABCDelegate需要的任何成员的MyClass实现都必须被声明为public。就这么简单。

如果您考虑一下,它无法以任何其他方式工作。 MyClass 的知识是公开的。 ABCDelegate 的知识是公开的。 MyClass 采用 ABCDelegate 这一事实是公开的。因此,MyClass 实现所需的 ADCDelegate 成员这一事实的知识必须是公开的——它会在白天的夜晚发生。

如果您真的想这样做,可以通过在命令链中插入一个非公共(public)对象类型来解决这个问题。这编译得很好:

public protocol Proto {
func f()
}
public class A {
private var helper : B!
func g() {
helper.f()
}
}
private class B : Proto {
func f() {}
}

但这看起来非常愚蠢。我的建议是按照编译器告诉你的去做,然后继续。

关于ios - 委托(delegate)方法必须公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329563/

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