IBOulets和IBActions应该是swift 3中的私有,内部还是公共?

时间:2017-03-26 19:28:54

标签: ios swift3

在较新版本的swift中,此主题尚未得到充分讨论。在较旧的主题中,没有很多信息性的答案。我不知道在私人/内部/公共场所做出口和行动是否有任何好处......

1 个答案:

答案 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 :有了这个,如果您是子类,您将能够修改模块中变量的值,但不能从外部修改

很高兴帮助:)