📅  最后修改于: 2023-12-03 15:00:50.725000             🧑  作者: Mango
在开发 iOS 应用程序时,为了实现更好的封装性和可维护性,我们需要对类的可见性进行控制。在 Objective-C 中,我们可以使用 @public
、@protected
和 @private
关键字来控制类成员的可见性。然而,在 Swift 中,可见性的控制方式有所不同。
Swift 提供了 5 种不同的访问级别,分别是:
open
:允许在定义类的模块以外继承和重载类;public
:可以被任何人访问,但只能在定义类的模块内被继承和重载;internal
:只能在定义类的模块内被访问;fileprivate
:只能在定义类的源文件中被访问;private
:只能在定义类中的作用域内被访问。其中,open
和 public
是对外暴露的访问级别,而 internal
、fileprivate
和 private
则是对内部使用的访问级别。
可以使用 public
、internal
、fileprivate
和 private
这 4 种访问级别来控制类成员的可见性。默认情况下,不加修饰符的类成员都是 internal
级别的。
class MyClass {
public var myPublicVar = 0
internal var myInternalVar = 0
fileprivate var myFileprivateVar = 0
private var myPrivateVar = 0
}
除了类成员之外,我们还可以使用这些访问级别来控制函数、方法、属性、下标等成员的可见性。
public class MyClass {
public func myPublicFunc() {}
internal func myInternalFunc() {}
fileprivate func myFileprivateFunc() {}
private func myPrivateFunc() {}
public var myPublicVar: Int = 0
internal var myInternalVar: Int = 0
fileprivate var myFileprivateVar: Int = 0
private var myPrivateVar: Int = 0
}
在平时开发过程中,建议尽量使用 private
、fileprivate
和 internal
这 3 种访问级别来控制类成员的可见性。这样做可以保证代码的安全性和可维护性。
如果需要对外暴露接口,可以使用 public
或 open
这 2 种访问级别。public
和 open
的区别在于,open
可以被外部模块继承和重载,而 public
不允许被继承和重载。
open class MyOpenClass {
open func myOpenFunc() {}
public func myPublicFunc() {}
}
public class MyPublicClass {
public func myPublicFunc() {}
}
在 Swift 中,我们可以使用 public
、internal
、fileprivate
和 private
这 4 种访问级别来控制类成员的可见性。其中,public
和 open
是对外暴露的访问级别,而 internal
、fileprivate
和 private
则是对内部使用的访问级别。建议在开发过程中尽量使用 private
、fileprivate
和 internal
这 3 种访问级别来控制类成员的可见性。