发布时间:2023-12-19 15:00
宇宙浩瀚,星河璀璨,天地辽阔,韶华珍贵 都辜负不得✨
在Swift中,structure和enumeration是值类型
class是引用类型
默认情况下,实例方法中是不可以修改值类型的属性,使用mutating后可修改属性的值
举个例子:在结构体中,有一个实例方法,如果直接修改属性的值,编译器会报错,可以使用mutating修饰。
struct Point {
var x = 0
var y = 0
mutating func movePoint(x: Int, y: Int) {
self.x += x
}
}
值类型不支持继承,只有类支持继承
子类可以重写(override)父类的下标、方法、属性
super.speak()//父类
子类只能将父类类型重写为计算属性,不能重写为存储属性
单例模式:就是只有一个实例,并且她自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
下面看看在swift中的几种实现方式
在实现之前导入Foundation
import Foundation
直接访问静态属性
class SingleOne {
//单例
static let shared = SingleOne()
}
结构体实现单例
class SingleTwo: {
private class var shared : SingleTwo {
struct SharedSingleton {
static let instance = SingleTwo()
}
return SharedSingleton.instance;
}
class func shareInstance() -> SingleTwo {
return shared;
}
}
定义私有静态变量 通过公有方法访问
class SingleThree {
private static let instance = SingleThree();
class func shareInstance() -> SingleThree {
return instance;
}
}
带立即执行的闭包初始化器的全局变量
class SingleFour {
static var shared : SingleFour = {
let instance = SingleFour()
return instance
}()
}