Swift 单例类
单例是一种在iOS开发中广泛使用的设计模式。多数开发者使用这个设计模式来开发应用程序。单例的设计模式允许我们在应用程序中全局共享我们的类实例。单例类是在应用程序的生命周期内只能实例化一次的类。
如果我们注意到,我们已经使用了许多苹果的Foundation API提供的单例类,如UserDefaults.standard、FileManager.default等。
让我们考虑下面的示例,其中包含一个简单的类,没有使用单例设计模式。
class LocationPermission{
func getPermission(){
debugPrint("Permission granted")
}
}
let location = LocationPermission()
location.getPermission()
在上面的示例中,LocationPermission类不是一个单例类。要使用LocationPermission类的getPersmission()方法,我们需要每次实例化这个类。让我们考虑以下示例来了解创建单例类的过程。
class LocationPermission{
static let sharedInstance = LocationPermission()
private init(){
}
func getPermission(){
debugPrint("Permission granted")
}
}
let location = LocationPermission.sharedInstance
location.getPermission()
如果我们将上述类的构造函数设为私有,则它变成了单例模式。然而,单例类必须有一个静态变量来返回该类的对象。