可選類型(Optional)語(yǔ)法:
- 如果j為空,將c賦值為123,否則將j的值賦c:
var c = j ?? 123 - 用!和?定義的區(qū)別:
Int? :必須使用!拆包(取值)
Int!:自動(dòng)拆包取值
類
當(dāng)一個(gè)類沒(méi)有創(chuàng)建構(gòu)造函數(shù)時(shí),編譯器自動(dòng)生成一個(gè)無(wú)參構(gòu)造函數(shù);一旦創(chuàng)建自定義構(gòu)造函數(shù),編譯器將不會(huì)再自動(dòng)生成無(wú)參構(gòu)造函數(shù)。
class與結(jié)構(gòu)體的區(qū)別:
- 用let定義的結(jié)構(gòu)體變量,成員不能修改
- 結(jié)構(gòu)體是值類型的,在賦值的時(shí)候會(huì)發(fā)生復(fù)制
- 類是引用類型
- 結(jié)構(gòu)體的成員方法需要加mutating才能修改成員變量,類科研直接修改
strong/weak:
- strong是強(qiáng)引用,當(dāng)一個(gè)的強(qiáng)引用個(gè)數(shù)大于0時(shí),對(duì)象不會(huì)被銷毀
- 變量默認(rèn)都是strong類型
- weak定義的變量一定是optional類型(隱藏)
類變量使用static定義,通過(guò)類名調(diào)用:
class Animal {
//成員變量
var name: Stringvar age: UInt
//定義類變量static var count = 0
}
..........
//調(diào)用類變量
Animal.count = 123
類方法使用class定義,通過(guò)類名調(diào)用:
//定義類方法
class func createAnimal() -> Animal {
return Animal()
}
//調(diào)用類方法
Animal.createAnimal()