2017-03-26 25 views
-1

在新版本的swift中没有讨论过这个话题。而在较老的话题中,没有太多有用的答案。我不知道是否有做出口和动作私人/内部/公众的任何好处......IBOulets和IBActions应该是私人的,内部的还是公开的3?

+0

都取决于您的要求。私人作品只在你的班级内部,不能在任何地方公开。内联在同一个package.so中都取决于你想要如何访问数据。 –

+0

我想不出有什么特别的情况下,有人想要用插座/动作子类。这甚至会是好的做法吗?如果不是,他们应该永远是私人的,不是? – hvasam

回答

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 
    } 

} 

正如你可以看到我继承了控制器,因为我想相同的功能加上其他的东西,新的标题,添加一个删除按钮,保存在本地,等等,这是命名的固体原则之一“开放原则”。欲了解更多信息:https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design

最后但并非最不重要的:

公共:这个问题,如果你继承你将能够在模块内修改变量的值,而不是从外部

很高兴帮助:)

相关问题