有什么方法可以隐藏该类符合某种协议?就像在中一样,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/