- 存儲(chǔ)屬性就是存儲(chǔ)在特定類架曹、結(jié)構(gòu)體里的一個(gè)常量或者變量柳恐。
/**
存儲(chǔ)屬性就是存儲(chǔ)在特定類锄禽、結(jié)構(gòu)體里的一個(gè)常量或者變量缓淹。
可以在定義存儲(chǔ)屬性的時(shí)候指定默認(rèn)值捷绒。
可以在構(gòu)造過程中設(shè)置或者修改存儲(chǔ)屬性的值
*/
class Person{
//存儲(chǔ)屬性
var name: String?
var age: Int?
}
struct Model{
//存儲(chǔ)屬性
var p: Person?
var index: Int
}
let p = Person()
p.name = "xiaoma"
p.age = 18
let model: Model = Model(p: p, index: 1)
開發(fā)中經(jīng)常在加載屬性利用懶加載 尤其在UI
//lazy var 變量:類型 = {創(chuàng)建變量代碼}()
class MyView: UIView {
lazy var label = UILabel()
lazy var tableView: UITableView = {() -> UITableView in
let tb = UITableView(frame: CGRect(x: 0, y: 0, width: 300, height: 300), style: .plain)
// tb.delegate = self
// tb.dataSource = self
return tb
}()
}
- 計(jì)算型屬性:不直接儲(chǔ)存值,而是通過提供一個(gè)getter方法來獲取值,然后用一個(gè)可選項(xiàng)的setter來間接設(shè)置其他的屬性或者變量的值
class NewClass {
var firstName = "伊麗莎白"
var lastName = "XiaoMa"
var fullName: String {
get{
return firstName+lastName
}
}
}
print(NewClass().fullName)
//還可以定義set方法
class Student {
var book = "iOS"
var changeBook: String {
get {
return book
}
set(newBook) {
book = newBook
}
}
}
let s = Student()
print(s.changeBook)
s.changeBook = "Swift"
print(s.changeBook)
//計(jì)算型屬性能夠幫助結(jié)構(gòu)體修改屬性
struct Animal {
var kind = ""
var age = 0
//如果要用方法修改結(jié)構(gòu)提屬性 需要使用mutating
mutating func changeAnimalKind(newKind: String) {
self.kind = newKind
}
//上面的方法等同下面的計(jì)算型屬性:說明計(jì)算型屬性是對(duì)方法的封裝
var changeKind: String {
get {
return self.kind
}
set(newKind) {
self.kind = newKind
}
}
}
var ani = Animal(kind: "哺乳動(dòng)物", age: 3)
print(ani.kind)
ani.changeAnimalKind(newKind: "兩棲動(dòng)物")
print(ani.kind)
ani.changeKind = "魚類"
print(ani.kind)
- 屬性觀察器:非常有意思的特性,可以用來檢測(cè)屬性值的變化
class example {
var age : Int = 10 {
//即將賦值了就會(huì)來到這里
willSet {
print("example方法 要修改 age了 newValue \(newValue)")
}
////賦值完畢了就來這里
didSet {
print("example方法 賦值完畢 oldvalue \(oldValue)")
}
}
}
let ex = example()
print(ex.age)
ex.age = 20
print(ex.age)
- 類型屬性 ; 代表類的特性 通常用static修飾
class CarClass {
static var whole = 4
}
//類型屬性不需要實(shí)例變量 直接通過類調(diào)用
print(CarClass.whole)
Swift HelloWorld(一)
Swift 基本數(shù)據(jù)類型(二)
Swift 字符串(三)
Swift 閉包(Closures)(四)
Swift 集合類型(五)
Swift 函數(shù)(六)
Swift 類(七)
Swift 結(jié)構(gòu)體袄友、枚舉(八)
Swift 屬性(九)
Swift 方法(十)