Ios 隐藏类符合协议的逻辑

Ios 隐藏类符合协议的逻辑,ios,swift3,Ios,Swift3,有没有办法隐藏符合某种协议的类?就像在Objective-C中一样-只用于在.m文件中添加协议,其他类(来自其他文件)没有看到它 比如说。我有一个测试单元,它有一个文本字段。我想隐藏,这个单元格符合协议。诸如此类: class TestCell: UITableViewCell { } fileprivate extension TestCell : UITextFieldDelegate { } 但我发誓。有优雅的解决方案吗 Swift团队表示,该能力“不太可能”实施。以下是关于它的原

有没有办法隐藏符合某种协议的类?就像在Objective-C中一样-只用于在
.m
文件中添加协议,其他类(来自其他文件)没有看到它

比如说。我有一个测试单元,它有一个文本字段。我想隐藏,这个单元格符合协议。诸如此类:

class TestCell: UITableViewCell {

}

fileprivate extension TestCell : UITextFieldDelegate {

}

但我发誓。有优雅的解决方案吗

Swift团队表示,该能力“不太可能”实施。以下是关于它的原始线索:

关于这一特定情景的具体陈述如下:

私人合规

现在,协议一致性的可视性不亚于 合格类型访问和协议访问的最小值。 因此,必须提供符合公共协议的公共类型 这是公开的。可以想象,取消这一限制, 这样就可以引入私人合规:

public protocol P { } 
public struct X { }
extension X : internal P { … } // X conforms to P, but only within this module
私人合规的主要问题是与 动态铸造。如果我有此代码:

func foo(value: Any) {
    if let x = value as? P { print(“P”) } 
}
foo(X())
在什么情况下应该打印“p”?如果定义了foo() 与X到P的一致性在同一模块内?如果电话是 与X到P的一致性定义在同一模块内?从未? 前两个答案中的任何一个都需要在 动态铸造基础结构要考虑 发生了哪个特定的动态强制转换(第一个选项)或在哪里 第二个选项是存在主义,而第三个答案是 断开静态和动态类型系统之间的链接 这是一个可以接受的结果


我很好奇你为什么要隐藏这个?@Essenceofchicken其他类看不到实现-Encapsulation@MartínMarconcini这个协议只需要私有textfield,例如,为什么我必须向其他人显示它?使用composition,组成私有textfield委托,注入它,抽象,等等。我仍然看不出问题是什么,这就像说“我是一个UITableViewCell,但我希望这个事实是保密的”。这是一个系统类,没关系。另外,框架需要知道这一点,否则,它将如何调用您的委托调用?我真的很想听到这背后有一个很好的理由(你可能有一个,但我从来没有听说过,所以我很好奇)。如果其他类看到它与否有什么关系?它不是真正的封装。仅仅因为你在一本书中读到了一些流行语并不意味着你必须实现它。解释一下,如果其他职业看到了这一点,会带来什么样的伤害?如果有什么可怕的事情会发生,那么隐藏起来就太好了。会发生什么可怕的事情?