iOS 學習之旅 - OC 篇

不知不覺來微信事業羣差不多也快一年了,自己學習 iOS 也已有半年,在此記錄一下自己的學習過程。很多同學可能想知道從 Android 轉到 iOS 公司給了多久的緩衝?大概是一週的樣子,那時我還在做 Android 首次拉取消息列表優化的需求,領導突然跟我說我們 iOS 缺人你要不轉到 iOS 開發去?當時叫了我和另外一個剛畢業的同學,另一個同學說考慮幾天(後來沒轉),我挺樂意所以當時就說轉了。我開始一邊做 Android 的需求一邊學習 OC 基礎,一週後接了兩個小需求(不是很難),我們主要是用的 OC 語言,很多同學新項目可能用的是 swift 我目前還沒學,因爲移動端大部分邏輯都在底層,由於之前寫過一點點 C 和 C++ ,所以總的回顧起來壓力不算太大。之所以當時非常想轉 iOS 主要是想鍛鍊一下自己,就像去年總結的時候我說:我們不可能只幹一個崗位,也不太可能在一家公司幹掉退休,當然如果你來騰訊或許可以幹到退休,隨着年齡的增長我們都不太喜歡變化,希望一直保持現在這樣挺好。其實處在任何環境做任何事都是差不多的,好比我在來微信前寫的總結文章裏說的一樣,不在於我們做什麼工作,而在於我們做事的方法和套路以及做事的態度。 目前來看我只說對了一半,沒想到今年大量裁員,所以以前我時常提醒大家我講的東西不一定對,大家要自己加以思考。現在我想說的是我講的東西都是錯的。

今年的情況我們也都看到了,各大互聯網企業都在降本增效,我們也能從中反思到很多東西。今年我們組也明確說了不裁員但是目前不再新增 HC,我的上個部門,之前的同學說要裁掉 70%(500人留下150人)往後還不知道有沒有新動作。很多同學都跟我發了一些消息,這其中還有很多是我當初推薦進來的同學,對此我心裏萬分抱歉也很難受,如果當初不推薦你過來今天就不會是這種局面,但是人生又沒有如果。我在公司 KM 和脈脈上看到了很多不好的言論,有些是怪公司的也有些是怪大環境的等等。因此我覺得有時候技術只是一個方面,更重要其實還是在於修心,不同的心境面對事物會有不一樣的感受。Android 的效能優化我們還沒講完,後面我打算每次課都拿 15 分鐘的時間,跟大家來分享一些我以前讀過的課外書籍。用蘇東坡的一首詞送給大家:莫聽穿林打葉聲,何妨吟嘯且徐行。竹杖芒鞋輕勝馬,誰怕?一蓑煙雨任平生。料峭春風吹酒醒,微冷,山頭斜照卻相迎。回首向來蕭瑟處,歸去,也無風雨也無晴。 這首詞,寫於蘇軾人生的灰暗時刻,希望同學們日後無論遇到何種人情事變,都能隨緣儘性,達觀豁達,擁有“一蓑煙雨任平生”的自在從容。

對於整個 iOS 開發我目前只學到了一點點皮毛,當然我也有自己的一套學習計劃(類似 Android 進階之旅),只是目前這形式抽不出太多的時間來學習。已經學完的有些感悟的當屬對 OC 的底層原理研究:

  • OC 的歷史和本質
  • 瞭解彙編指令與 LLDB 命令
  • 對象的創建過程、類的本質、元類以及 isa 指針
  • 方法的本質以及方法的查找與轉發過程
  • App 啓動 Class 與 Category 的裝載過程
  • block 的本質探究
  • KVO 與 KVC 的底層原理
  • 多線程與 GCD 的原理
  • OC 的內存管理

內容看起來並不是很多,但是需要一些前提準備工作,我們主要是熟悉兩個源碼,一個是 objc 的源碼一個是 llvm 的源碼。關於 objc 的源碼配置我這裏提供一個 github 倉庫大家自己下載就好了,如果大家自己去官網下載配置相當麻煩。我們還需要了解編譯與彙編的一些簡單知識,這裏我們只需要瞭解一些簡單的指令就可以了,因爲蘋果只開源了部分代碼,有些內容我們只能去看彙編,還有比如 OC 方法的執行過程中有部分代碼就是彙編寫的。後面我會陸續的完成這些文章,關於《 Android 的效能優化》看今年能不能再次啓動。目前又做了 iOS 開發,講起 Android 內容來應該會更有感悟一些,所以我們都不要太急,希望把最好的東西分享給大家。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章