在较新版本的swift中,此主题尚未得到充分讨论。在较旧的主题中,没有很多信息性的答案。我不知道在私人/内部/公共场所做出口和行动是否有任何好处......
答案 0 :(得分:0)
这取决于您的需求
内部 :如果您正在创建自定义库或框架,您不会希望那些使用它的人,修改某些内部的值出口(或任何其他变量)对吗?因此,在这种情况下,您可能使用内部,因为您希望在模块中访问这些变量。
fileprivate :有了这个,如果你继承了,你将无法改变你的商店的价值。
但是,为什么你需要子类?让我们看看这个例子
class CDWriteMessageViewController: UIViewController {
@IBOutlet weak var someTitleLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.someTitleLabel.text = "Write a Message" // Title by default
}
}
这是一个为某人创建消息的控制器。然后你意识到你还需要能够在发送之前在本地保存消息,因此你需要创建另一个控制器。
class CDDraftMessageViewController: CDWriteMessageViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.someTitleLabel.text = "Draft" // Modifiying the outlet
}
}
正如你所看到的那样,我对控制器进行了子类化,因为我想要相同的功能PLUS其他东西:新标题,添加删除按钮,本地保存等等。这是SOLID命名的原则之一&# 34;开放原则"。有关详细信息:https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design
最后但并非最不重要:
public :有了这个,如果您是子类,您将能够修改模块中变量的值,但不能从外部修改
很高兴帮助:)