swift 筆記
fileprivate 和 private
fileprivate 私有际歼,文件內(nèi)和擴(kuò)展可以使用該變量
private 絕對(duì)私有颤枪,只能在類或者結(jié)構(gòu)體內(nèi)使用
static 在func 關(guān)鍵字之前
指定類方法,可被子類重寫
class 在func 關(guān)鍵字之前
指定類方法,不能被子類重寫,包含final特性
final 可以把屬性,下標(biāo)嗡害,等標(biāo)記wei final 即可防止子類重寫
http://www.reibang.com/p/a9c9e7313438
關(guān)于as http://www.reibang.com/p/edbdc60218d1
as keyword:Guaranteed conversion、 Upcasting
理解:字面理解就是有保證的轉(zhuǎn)換畦攘,從派生類轉(zhuǎn)換為基類的向上轉(zhuǎn)型
// 將1轉(zhuǎn)成float
let num = 1 as CGFloat
|------------------------
// dog轉(zhuǎn)換到父類animal
class Animal {}
class Dog: Animal {}
let d = Dog()
d as Animal
as! keyword:Forced conversion霸妹、 Downcasting
理解:字面理解就是有強(qiáng)項(xiàng)轉(zhuǎn)換,即向下轉(zhuǎn)型知押,子類(派生類)向父類轉(zhuǎn)換叹螟,官方解釋說這是一個(gè)不被保證的轉(zhuǎn)換,可能會(huì)因?yàn)閺?qiáng)轉(zhuǎn)的失敗而會(huì)導(dǎo)致崩潰台盯。同時(shí) 首妖!是一個(gè)陷阱的標(biāo)志,就像??一樣爷恳,用起來存在一定危險(xiǎn)性
文/CoderTgg(簡(jiǎn)書作者)
原文鏈接:http://www.reibang.com/p/edbdc60218d1
著作權(quán)歸作者所有有缆,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),并標(biāo)注“簡(jiǎn)書作者”。
// Dog到Animal的轉(zhuǎn)化
class Animal {}
class Dog: Animal {}
let a: Animal = Dog()
a as Dog // as不能將a轉(zhuǎn)成Dog棚壁,即不能向下轉(zhuǎn)換
a as! Dog // as杯矩!能強(qiáng)行將a轉(zhuǎn)成Dog -> Bingo
as? keyword: Optional、 Nil
理解:Swfit代碼寫一段時(shí)間后會(huì)發(fā)現(xiàn)到處都是 袖外? 史隆,這預(yù)示著如果轉(zhuǎn)換不成功的時(shí)候便會(huì)返回一個(gè) nil 對(duì)象。成功的話返回可選類型值(optional)曼验。
// Dog泌射、Cat和Animal的轉(zhuǎn)換關(guān)系
class Animal {}
class Cat: Animal {}
class Dog: Animal {
var name = "Spot"
}
let dog: Dog? = nil
dog?.name // 選擇調(diào)用,返回空值nil
dog!.name // 強(qiáng)行調(diào)用鬓照,報(bào)錯(cuò)
let animal: Animal = Cat()
animal as? Dog // 貓轉(zhuǎn)狗失敗熔酷,返回nil
animal as! Dog // 貓強(qiáng)行轉(zhuǎn)狗,失敗報(bào)錯(cuò)
在swift中有兩種初始化方法豺裆,
1.指定初始化方法
- 指定初始化方法其實(shí)指的就是 init 方法
- 默認(rèn)的init方法就是指定初始化方法
init方法不能嵌套使用
2.便利初始化方法
便利構(gòu)造方法即在 init 方法前加上 convenience 關(guān)鍵字
從代碼中我們可以得出結(jié)論:
1.便利構(gòu)造方法必須調(diào)用指定構(gòu)造方法拒秘,完成初始化,不能單獨(dú)使用
2.便利構(gòu)造方法可以嵌套使用臭猜,但最終都需要調(diào)用指定構(gòu)造方法
3.指定構(gòu)造方法不能嵌套使用
便利構(gòu)造方法相比指定構(gòu)造方法更加靈活躺酒,為我們開發(fā)提供方便,因?yàn)樗菀诐M足實(shí)際需要蔑歌,我們?cè)趯?shí)際開發(fā)中羹应,應(yīng)根據(jù)需要來設(shè)計(jì)便利構(gòu)造方法
required 修飾符 http://blog.csdn.net/jq2530469200/article/details/51672889
required修飾符的使用規(guī)則
1. required修飾符只能用于修飾類初始化方法。
2. 當(dāng)子類含有異于父類的初始化方法時(shí)(初始化方法參數(shù)類型和數(shù)量異于父類)次屠,子類必須要實(shí)現(xiàn)父類的required初始化方法量愧,并且也要使用required修飾符而不是override。
3. 當(dāng)子類沒有初始化方法時(shí)帅矗,可以不用實(shí)現(xiàn)父類的required初始化方法。