【发布时间】:2018-04-02 14:29:42
【问题描述】:
@IBOutlets 通常不能从其视图控制器外部访问。为什么在 Xcode 中创建它们时不将它们设置为默认私有?要遵循的最佳做法是什么?
@IBOutlet weak var myButton: UIButton!
【问题讨论】:
@IBOutlets 通常不能从其视图控制器外部访问。为什么在 Xcode 中创建它们时不将它们设置为默认私有?要遵循的最佳做法是什么?
@IBOutlet weak var myButton: UIButton!
【问题讨论】:
我猜它是旧 Objective-C 时代的遗留物,但现在我们有了 Swift,我们希望一切都美好而安全it is indeed the best practice to set @IBOutlets to private。
它应该是内部的没有一个原因,它应该是私有的有很多原因,这是显而易见的,所以我不打算列出它们。
【讨论】:
为获得最佳实践,您可以添加fileprivate 或private 属性。
这有助于您将所有视图属性保密并封装与用户界面一起使用所需的所有元素,并在必要时创建其他字段internal 或public。
如果您想在其他类或结构中使用属性,您可以使用internal 属性;如果您将来要在库中使用它,可以使用public 属性。
例如,Profile 屏幕上的 User 数据类型的属性可以是 internal(默认情况下),而 usernameLabel 或 avatarImageView 可以是 fileprivate 或private。
当然,还要避免不必要的视图属性使用。
【讨论】:
因为人们可能会也可能不想将它们设为私有。虽然让每个视图控制器保持一定程度的原子性可以降低复杂性,并且保持方法和属性私有有助于实现这一点,但在某些情况下,直接在控制器之间传递信息是合适的。例如,可以使用子视图控制器来重用复杂的组件。
【讨论】: