@IBOutlet 在 iOS 中默认应该是私有的还是内部的?

@IBOutlet by default should be private or internal in iOS?

@IBOutlets 通常不会从其视图控制器外部访问。为什么在 Xcode 中创建时不将它们设置为默认私有?应遵循的最佳做法是什么?

@IBOutlet weak var myButton: UIButton!

我想这是旧 Objective-C 时代的遗留物,但现在当我们拥有 Swift 并且我们希望一切都美好安全 it is indeed the best practice to set @IBOutlets to private

它应该是内部的没有一个原因,它应该是私有的有很多原因,这些都很明显,所以我不打算列出它们。

因为有人可能希望也可能不想将它们设为私有。虽然保持每个视图控制器的原子性可以降低复杂性,并且保持方法和属性私有有助于实现这一点,但在某些情况下,直接在控制器之间传递信息是合适的。例如,可以使用子视图控制器来重用一个复杂的组件。

为获得最佳实践,您可以添加 fileprivateprivate 属性。

这有助于您将所有视图属性保密并封装使用用户界面所需的所有元素,并在必要时制作其他字段internalpublic

如果您想在其他 类 或结构中使用 属性,您可以使用 internal 属性;如果将来您要在图书馆。

例如,个人资料屏幕上用户数据类型的 属性 可以是内部(默认),usernameLabel 或 avatarImageView 可以是 fileprivateprivate

当然,还要避免使用不必要的视图属性。