有什么方法可以隐藏该类符合某种协议?就像在中一样,Objective-C -只是用来在.m文件中添加协议,而其他类(来自另一个文件)则看不到它。

例如。我有一个具有文本字段的测试单元。我想隐藏一下,这个单元格符合协议。像这样:

class TestCell: UITableViewCell {

}

fileprivate extension TestCell : UITextFieldDelegate {

}

但是编译器向我发誓。有什么优雅的解决方案吗?

最佳答案

Swift团队已将此功能声明为“不太可能”实现。这是关于它的原始主题:https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160229/011666.html

关于此特定方案的具体说明是:

private 合规

目前,协议一致性不亚于可见性。
符合条件的类型和协议的访问权限中的最小值。
因此,必须符合 public 协议的 public 类型
公开符合性。可以想象消除这一限制,
这样就可以引入一种 private 一致性:

public protocol P { }
public struct X { }
extension X : internal P { … } // X conforms to P, but only within this module

private 一致性的主要问题是与
动态铸造。如果我有此代码:
func foo(value: Any) {
    if let x = value as? P { print(“P”) }
}
foo(X())

在什么情况下应打印“P”?如果定义了foo()
在与X符合P?如果电话是
在与X符合P?的模块内定义决不?
前两个答案中的任何一个都需要在
动态投放基础架构,以考虑以下模块
发生了哪个动态投射(第一个选项)或
存在存在形成了(第二个选择),而第三个答案
断开静态和动态类型系统之间的链接-没有一个
这是可以接受的结果。

关于ios - 类符合协议(protocol)的隐藏逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40871194/

10-13 09:04