加深理解Optional

Swift語(yǔ)言很重要的一個(gè)特征就是加入了Optional土思,剛接觸時(shí)Optional的理解就是一個(gè)可能為nil的變量啄刹,定義的時(shí)候語(yǔ)句結(jié)尾加個(gè)袋狞?焚辅,使用的時(shí)候加個(gè)映屋!解包。很多時(shí)候都是xcode自動(dòng)補(bǔ)全的同蜻,隨著使用的增多秧荆,遇到了各種各樣的坑,才對(duì)Optional這個(gè)東西有了深入一點(diǎn)的理解埃仪,也明白了它到底是干什么用的。

看下面一段代碼:

var nothing:String?     
func testOptional(str:String?){
   if str == nil {
       return          
   }
   print(str)
}
testOptional(nothing!)

運(yùn)行結(jié)果"fatal error: unexpectedly found nil while unwrapping an Optional value"

這是因?yàn)樵趕wift語(yǔ)言中陕赃,變量是不能為nil的卵蛉。這是這個(gè)語(yǔ)言最大的特點(diǎn)。定義的時(shí)候如果給一個(gè)變量賦初始值為nil么库,編譯都不會(huì)通過(guò)傻丝。運(yùn)行的時(shí)候如果一個(gè)變量的值為nil,程序就會(huì)"fatal error: unexpectedly found nil while unwrapping an Optional value"诉儒。所以我們?cè)趯懛椒ǖ臅r(shí)候?qū)?shù)的檢測(cè)是能是檢測(cè)Optional的參數(shù)是不是nil葡缰,如果這個(gè)Optional參數(shù)傳入的時(shí)候已經(jīng)解包,那么就沒(méi)有檢測(cè)的機(jī)會(huì)了忱反,運(yùn)行時(shí)只要發(fā)現(xiàn)參數(shù)為nil直接就fatal error了泛释,不會(huì)進(jìn)到函數(shù)內(nèi)部。
所以正確的調(diào)用方式如下:
<code>testOptional(nothing)</code>
因?yàn)樵诜椒╰estOptional內(nèi)部要做參數(shù)檢查温算,所以傳入的參數(shù)必須是Optional的而不是解包后的值怜校。
結(jié)論1. Swift中只有Optional的值可能為nil,如果非Optional的值為nil則會(huì)拋出fatal error注竿。
(待續(xù))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茄茁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子巩割,更是在濱河造成了極大的恐慌裙顽,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宣谈,死亡現(xiàn)場(chǎng)離奇詭異愈犹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蒲祈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門甘萧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人梆掸,你說(shuō)我怎么就攤上這事扬卷。” “怎么了酸钦?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵怪得,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)徒恋,這世上最難降的妖魔是什么蚕断? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮入挣,結(jié)果婚禮上亿乳,老公的妹妹穿的比我還像新娘。我一直安慰自己径筏,他們只是感情好葛假,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滋恬,像睡著了一般聊训。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恢氯,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天带斑,我揣著相機(jī)與錄音,去河邊找鬼勋拟。 笑死勋磕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的指黎。 我是一名探鬼主播朋凉,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼醋安!你這毒婦竟也來(lái)了杂彭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吓揪,失蹤者是張志新(化名)和其女友劉穎亲怠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柠辞,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡团秽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叭首。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片习勤。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖焙格,靈堂內(nèi)的尸體忽然破棺而出图毕,到底是詐尸還是另有隱情,我是刑警寧澤眷唉,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布予颤,位于F島的核電站囤官,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛤虐。R本人自食惡果不足惜党饮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驳庭。 院中可真熱鬧刑顺,春花似錦、人聲如沸饲常。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)不皆。三九已至,卻和暖如春熊楼,著一層夾襖步出監(jiān)牢的瞬間霹娄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工鲫骗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留犬耻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓执泰,卻偏偏與公主長(zhǎng)得像枕磁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子术吝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 對(duì)各種值為"空"的情況處理不當(dāng)计济,幾乎是所有Bug的來(lái)源。 在我們的例子里排苍,盡管tmp的值是nil沦寂,但調(diào)用tmp的r...
    AKyS佐毅閱讀 10,526評(píng)論 1 13
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,725評(píng)論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理淘衙,服務(wù)發(fā)現(xiàn)传藏,斷路器,智...
    卡卡羅2017閱讀 134,695評(píng)論 18 139
  • 01-常量與變量 學(xué)習(xí)swift第一步打印Hello World print("Hello World") swi...
    iOS_恒仔閱讀 5,166評(píng)論 2 19
  • 1.元組 1.1什么是元組 在其他語(yǔ)言中很早就有元組這個(gè)概念, 但是對(duì)于OC程序員來(lái)說(shuō)這是一個(gè)新的概念官方定義:元...
    高俊閱讀 431評(píng)論 0 0