有没有办法隐藏该类符合某些协议?就像在Objective-C中一样 - 只是用于在.m文件中添加协议,而其他类(来自其他文件)则没有看到它.
例如.我有一个测试单元,它有一个文本字段.我想隐藏,这个单元格符合协议.像这样的东西:
class TestCell: UITableViewCell {
}
fileprivate extension TestCell : UITextFieldDelegate {
}
Run Code Online (Sandbox Code Playgroud)
但编译器发誓我.任何优雅的解决方
Swift团队已经表明这种能力"不太可能"实施.以下是关于它的原始主题:https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160229/011666.html
有关此特定方案的具体说明如下:
私人合规
现在,协议一致性可以不低于符合类型的访问和协议访问的最小值.因此,符合公共协议的公共类型必须公开提供一致性.可以想象删除该限制,以便可以引入私有一致性:
Run Code Online (Sandbox Code Playgroud)public protocol P { } public struct X { } extension X : internal P { … } // X conforms to P, but only within this module私有一致性的主要问题是与动态强制转换的交互.如果我有这个代码:
Run Code Online (Sandbox Code Playgroud)func foo(value: Any) { if let x = value as? P { print(“P”) } } foo(X())在什么情况下应该打印"P"?如果foo()在与X到P的一致性相同的模块中定义?如果在与X到P的一致性相同的模块中定义了呼叫?决不?前两个答案中的任何一个都需要动态铸造基础设施中的重大复杂性,以考虑发生特定动态铸造的模块(第一选项)或形成存在物的模块(第二选项),而第三个答案打破了静态和动态类型系统之间的链接 - 没有一个是可接受的结果.
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |