假设我有一堂课
public class MyClass: NSObject, ABCDelegate {
func delegateMethod(a: a, b: b) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这个委托方法由一个MyClass处理一些网络操作的单例调用.
事情是编译器抱怨Method 'delegateMethod(...)' must be declared public because it matches a requirement in public protocol 'ABCDelegate'.
我的问题是:
private func或简单的方法func如果ABCDelegate被声明为public并且采用它的MyClass被声明为public,则必须将ABCDelegate所需的任何成员的MyClass实现声明为public.就这么简单.
如果你考虑一下,它就无法以任何其他方式运作.MyClass的知识是公开的.ABCDelegate的知识是公开的.了解MyClass采用ABCDelegate的事实是公开的.因此,了解MyClass实现ADCDelegate所需成员的事实必须是公开的 - 它就像当天的夜晚一样.
如果你真的想要,你可以通过在命令链中插入一个非公共对象类型来解决这个问题.编译好:
public protocol Proto {
func f()
}
public class A {
private var helper : B!
func g() {
helper.f()
}
}
private class B : Proto {
func f() {}
}
Run Code Online (Sandbox Code Playgroud)
但它看起来非常愚蠢.我的建议只是做编译器告诉你的事情并继续前进.
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |