Swift成長(zhǎng)歷程

對(duì)于經(jīng)常不習(xí)慣在網(wǎng)上發(fā)表文章的孩子阻塑,我覺得要開始改變一下自己,給自己養(yǎng)成一個(gè)好的習(xí)慣果复,也是給自己過去一段時(shí)間學(xué)習(xí)的總結(jié)陈莽,溫故而知新,覺得還是很有必要的据悔!

好了传透,閑話不多說,說多了我怕剎不住車极颓,變成不是技術(shù)總結(jié)了,可能變成心里路程了群嗤,O(∩_∩)O哈哈~

對(duì)于從事iOS開發(fā)的工作者菠隆,我想遲早都要奔著Swift去的,對(duì)于Swift也學(xué)習(xí)了挺久一段時(shí)間狂秘,也投入到了項(xiàng)目中使用骇径,說說我的初步感受,這個(gè)語言用習(xí)慣了寫起來是真的順手者春,看著也是舒服破衔,不過就是Xcode可能是不太適應(yīng)這個(gè)新孩子,會(huì)挺容易崩潰的钱烟,聯(lián)想也不是太順暢晰筛。

1.對(duì)于Swift就不得不說到 Swift的可選類型(Optional Type)

什么是optional?

在Swift中聲明的一個(gè)變量時(shí), 默認(rèn)情況下它是non-optional(非可選), 即必須給這個(gè)變量賦一個(gè)非空的值. 如果給non-optional(非可選)類型的變量賦值nil, 編譯器就會(huì)報(bào)錯(cuò)。

  • Swift中, 當(dāng)聲明一個(gè)類的屬性時(shí), 屬性默認(rèn)也是non-optional的
    var string1: String = "hello" // OK
    string1 = nil // 這樣就會(huì)報(bào)錯(cuò)

  • 聲明成可選類型
    class MyClass { var name: String? // }

2.Swift中的各種控制語句

  1. Continue
    continue語句告訴一個(gè)循環(huán)體立刻停止本次循環(huán)拴袭,重新開始下次循環(huán)读第。就好像在說“本次循環(huán)我已經(jīng)執(zhí)行完了”,但是并不會(huì)離開整個(gè)循環(huán)體拥刻。
  2. Break

break語句會(huì)立刻結(jié)束整個(gè)控制流的執(zhí)行怜瞒。當(dāng)你想要更早的結(jié)束一個(gè)switch代碼塊或者一個(gè)循環(huán)體時(shí),你都可以使用break語句般哼。
控制流

  • Swift提供了多種流程控制結(jié)構(gòu)吴汪,包括可以多次執(zhí)行任務(wù)的while循環(huán),基于特定條件選擇執(zhí)行不同代碼分支的if蒸眠、guard和switch語句漾橙,還提供了for-in循環(huán)
    帶標(biāo)簽的語句

在 Swift 中,你可以在循環(huán)體和條件語句中嵌套循環(huán)體和條件語句來創(chuàng)造復(fù)雜的控制流結(jié)構(gòu)黔宛。并且近刘,循環(huán)體和條件語句都可以使用break語句來提前結(jié)束整個(gè)代碼塊擒贸。因此,顯式地指明break語句想要終止的是哪個(gè)循環(huán)體或者條件語句觉渴,會(huì)很有用介劫。類似地,如果你有許多嵌套的循環(huán)體案淋,顯式指明continue語句想要影響哪一個(gè)循環(huán)體也會(huì)非常有用座韵。
為了實(shí)現(xiàn)這個(gè)目的,你可以使用標(biāo)簽(statement label)來標(biāo)記一個(gè)循環(huán)體或者條件語句踢京,對(duì)于一個(gè)條件語句誉碴,你可以使用break加標(biāo)簽的方式,來結(jié)束這個(gè)被標(biāo)記的語句瓣距。對(duì)于一個(gè)循環(huán)語句黔帕,你可以使用break或者continue加標(biāo)簽,來結(jié)束或者繼續(xù)這條被標(biāo)記語句的執(zhí)行蹈丸。
聲明一個(gè)帶標(biāo)簽的語句是通過在該語句的關(guān)鍵詞的同一行前面放置一個(gè)標(biāo)簽成黄,作為這個(gè)語句的前導(dǎo)關(guān)鍵字(introducor keyword),并且該標(biāo)簽后面跟隨一個(gè)冒號(hào)逻杖。下面是一個(gè)針對(duì)while循環(huán)體的標(biāo)簽語法奋岁,同樣的規(guī)則適用于所有的循環(huán)體和條件語句。
label name: while condition { statements }

  • 提前退出guard

像if語句一樣荸百,guard的執(zhí)行取決于一個(gè)表達(dá)式的布爾值闻伶。我們可以使用guard語句來要求條件必須為真時(shí),以執(zhí)行g(shù)uard語句后的代碼够话。不同于if語句蓝翰,一個(gè)guard語句總是有一個(gè)else從句,如果條件不為真則執(zhí)行else從句中的代碼更鲁。如果guard語句的條件被滿足霎箍,則繼續(xù)執(zhí)行g(shù)uard語句大括號(hào)后的代碼。將變量或者常量的可選綁定作為guard語句的條件澡为,都可以保護(hù)guard語句后面的代碼

還有一點(diǎn)值得注意的地方是結(jié)構(gòu)體和枚舉是值類型

值類型被賦予給一個(gè)變量漂坏、常量或者被傳遞給一個(gè)函數(shù)的時(shí)候,其值會(huì)被拷貝媒至。
實(shí)際上顶别,在 Swift 中,所有的基本類型:整數(shù)(Integer)拒啰、浮點(diǎn)數(shù)(floating-point)驯绎、布爾值(Boolean)、字符串(string)谋旦、數(shù)組(array)和字典(dictionary)剩失,都是值類型屈尼,并且在底層都是以結(jié)構(gòu)體的形式所實(shí)現(xiàn)。
在 Swift 中拴孤,所有的結(jié)構(gòu)體和枚舉類型都是值類型脾歧。這意味著它們的實(shí)例,以及實(shí)例中所包含的任何值類型屬性演熟,在代碼中傳遞的時(shí)候都會(huì)被復(fù)制鞭执。即形成一個(gè)新的對(duì)象

  • 類是引用類型

與值類型不同,引用類型在被賦予到一個(gè)變量芒粹、常量或者被傳遞到一個(gè)函數(shù)時(shí)兄纺,其值不會(huì)被拷貝。因此化漆,引用的是已存在的實(shí)例本身而不是其拷貝估脆。

  • 方法的拋出異常的處理


  • 關(guān)于構(gòu)造函數(shù)的


  • 關(guān)于事件監(jiān)聽


  • 事件的監(jiān)聽機(jī)制: 將方法包裝成@sel放在類的方法列表中 然后在類的方法列表中找
    根據(jù)@sel找到imp指針(函數(shù)指針) 最后執(zhí)行函數(shù)


強(qiáng)大的 guard else 提前退出 和 if let 可選綁定 可以多變的解決很多邏輯問題
 func guardLet() {
        let bcG: String? = "gurad"
        let bcA: String? = "let"
        // guard else 的多種邏輯用法
        
        guard bcG == bcA else {
            return
        }
        print("相等")
        
        guard let g = bcG, let a = bcA else {
            return
        }
        print(a + g)
        
        guard var vg = bcG, var va = bcA else {
            return
        }
        vg = "vg"
        va = "va"
        print(vg + va)
        
        // 可選綁定的條件邏輯
        if let bg = bcG, bg.isEmpty {
            print(bg)
        }
        
        if var bg = bcG ,var ba = bcA {
            bg = "bg"
            ba = "ba"
            print(bg + ba)
        }
        
        if let bg = bcG ,let ba = bcA {
            print(bg + ba)
        }
    }

第一次就簡(jiǎn)單介紹到這里!沒什么干貨获三,就是來認(rèn)認(rèn)門旁蔼,先混個(gè)熟臉,后續(xù)再跟新別的~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疙教,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子伞租,更是在濱河造成了極大的恐慌贞谓,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葵诈,死亡現(xiàn)場(chǎng)離奇詭異裸弦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)作喘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門理疙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泞坦,你說我怎么就攤上這事窖贤。” “怎么了贰锁?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵赃梧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我豌熄,道長(zhǎng)授嘀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任锣险,我火速辦了婚禮蹄皱,結(jié)果婚禮上览闰,老公的妹妹穿的比我還像新娘。我一直安慰自己巷折,他們只是感情好压鉴,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盔几,像睡著了一般晴弃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逊拍,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天上鞠,我揣著相機(jī)與錄音,去河邊找鬼芯丧。 笑死芍阎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缨恒。 我是一名探鬼主播谴咸,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼骗露!你這毒婦竟也來了岭佳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤萧锉,失蹤者是張志新(化名)和其女友劉穎珊随,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柿隙,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叶洞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了禀崖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衩辟。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖波附,靈堂內(nèi)的尸體忽然破棺而出艺晴,到底是詐尸還是另有隱情,我是刑警寧澤叶雹,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布财饥,位于F島的核電站,受9級(jí)特大地震影響折晦,放射性物質(zhì)發(fā)生泄漏钥星。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一满着、第九天 我趴在偏房一處隱蔽的房頂上張望谦炒。 院中可真熱鬧贯莺,春花似錦、人聲如沸宁改。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)还蹲。三九已至爹耗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谜喊,已是汗流浹背潭兽。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斗遏,地道東北人山卦。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像诵次,于是被迫代替她去往敵國(guó)和親账蓉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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