大神唐巧的《iOS開發(fā)進(jìn)階》 - 讀后感(個(gè)人總結(jié))

為什么要看書

為什么要多看書呢荞彼?

在技術(shù)類書籍上,看書的目的昂羡,不是為了記住所有的技術(shù)絮记,而是為了積累相關(guān)的技術(shù),在需要用到時(shí)能夠信手拈來虐先。

此書的定位

比如怨愤,最近看了唐巧的《iOS開發(fā)進(jìn)階》,嚴(yán)格意義上來說蛹批,這本讀物撰洗,是作者在其博客文章的基礎(chǔ)上,集合而成的腐芍,是對其發(fā)表的文章一個(gè)綜合差导。

所以,整本書甸赃,各章節(jié)之間柿汛,不會有太多的聯(lián)系冗酿,勉強(qiáng)只能算是對iOS開發(fā)知識埠对,某些比較重要的知識點(diǎn)的分門別類络断,論述了某個(gè)知識點(diǎn)的進(jìn)階應(yīng)用,卻忽略了知識點(diǎn)之間的關(guān)聯(lián)项玛,也沒有對這些知識點(diǎn)的綜合應(yīng)用貌笨。

某種意義上來說,可以把這本書當(dāng)作是手冊類的技術(shù)查詢書襟沮,而非iOS開發(fā)的綜合應(yīng)用锥惋。

與其說是開發(fā)進(jìn)階,我反倒覺得這本書的內(nèi)容开伏,更適合入門初學(xué)者或者經(jīng)驗(yàn)尚不是太足的開發(fā)者膀跌。而對于經(jīng)驗(yàn)較豐富的開發(fā)人員,此書可作為知識盲點(diǎn)的補(bǔ)充讀物固灵。

以上捅伤,是個(gè)人對本書定位的一些看法,各花入各眼巫玻,不喜勿噴丛忆。對于想入手此書的開發(fā)者,也可作為參考仍秤。

如果你正在面試熄诡,或者正準(zhǔn)備跳槽,不妨看看我精心總結(jié)的iOS大廠面試資料https://gitee.com/Mcci7/i-oser 來獲取一份詳細(xì)的大廠面試資料 為你的跳槽加薪多一份保障

此書的精彩內(nèi)容分享

說完了書的定位诗力,對本書某些值得單獨(dú)拿出來談?wù)劦哪承﹥?nèi)容凰浮,就在這里開始展開吧。

此書對技術(shù)細(xì)節(jié)的把握姜骡,還是值得看的导坟,對于開發(fā)基礎(chǔ)的夯實(shí),有一定的作用圈澈。比如內(nèi)存管理惫周,CoreText排版引擎,以及第三方工具比如Charles康栈、Reveal的使用等知識點(diǎn)递递,可深入細(xì)看。

書的目錄結(jié)構(gòu)

全書分為三個(gè)部分啥么,分別來說下登舞。

引言

引言里,主要講述了提高開發(fā)技能的一些途徑悬荣。

關(guān)于如何提高iOS開發(fā)技能

1菠秒、閱讀博客

相信這是最簡單易行的學(xué)習(xí)方式,利用碎片化的時(shí)間,但也需要更高的專注力践叠,因?yàn)樗槠拈喿x言缤,容易被分散注意力,而且閱讀范圍的擴(kuò)散會無節(jié)制禁灼。

比如管挟,博客文章里有其它鏈接 ,跳轉(zhuǎn)鏈接后弄捕,第二篇文章又包括其它鏈接僻孝,這就容易導(dǎo)致有限的時(shí)間內(nèi),看不完想要看的文章守谓。

最簡單的解決辦法就是穿铆,不點(diǎn)擊文章里的鏈接,看完后再發(fā)散思維斋荞,去看其它鏈接文章悴务。

2、讀書

這不就是我寫這篇文章的目的嗎譬猫。讀書讯檐,有利于全面、系統(tǒng)地學(xué)習(xí)知識染服。

3别洪、看蘋果的官方文檔

這個(gè)是最全面,最權(quán)威的學(xué)習(xí)方式柳刮,但相對來說挖垛,也比較枯燥。所有的iOS開發(fā)技術(shù)秉颗,都能在這里學(xué)習(xí)到痢毒。

說到這里,聯(lián)想到第二點(diǎn)提到的讀書蚕甥,其實(shí)現(xiàn)在市面上的大部分入門級書籍哪替,大部分內(nèi)容都是對蘋果官方API的介紹和應(yīng)用。所以某種意義上來說菇怀,看書也顯得不是很必要凭舶。

4、看開源項(xiàng)目的代碼

我個(gè)人覺得爱沟,這是開發(fā)進(jìn)階的必要手段帅霜。對設(shè)計(jì)模式、編碼規(guī)范呼伸、基礎(chǔ)知識身冀,這些方面的提高都會有極大的幫助。

一、iOS開發(fā)工具

分享了一些常用搂根、實(shí)用的開發(fā)工具蝶怔。

但是,書中提及的移動統(tǒng)計(jì)工具Flurry兄墅、崩潰日志記錄工具Crashlytics、App Store統(tǒng)計(jì)工具App Annie澳叉,這些工具可能有其它更好的替代者隙咸,相對來說,也顯得過時(shí)成洗。

最后提及的Xcode插件五督,由于目前Xcode已經(jīng)不支持插件,因此也就成了雞肋瓶殃。

所以充包,現(xiàn)在來看,以下三個(gè)工具遥椿,個(gè)人覺得是比較實(shí)用的基矮。

使用Cocoapods做依賴管理

主要用來管理第三方庫,當(dāng)然冠场,也可以將自己項(xiàng)目的組件提取出來成為庫家浇,然后使用Cocoapods來進(jìn)行管理。

網(wǎng)絡(luò)封包分析工具Charles

著名的網(wǎng)絡(luò)抓包工具碴裙,主要用于控制網(wǎng)絡(luò)流量钢悲、抓取網(wǎng)絡(luò)請求以及響應(yīng),以及其它一些功能舔株。

界面調(diào)試工具Reveal

這個(gè)界面調(diào)試工具莺琳,相信大家也不陌生。但是载慈,隨著Xcode對自身集成的界面調(diào)試工具的不斷優(yōu)化惭等,第三方工具Reveal的使用可能會越來越少。當(dāng)然办铡,Reveal會有更強(qiáng)大的功能咕缎,包括不編譯調(diào)試UI等功能,還是比較實(shí)用的料扰。

二凭豪、iOS開發(fā)實(shí)踐

本章講述的內(nèi)容,本應(yīng)該是作為壓軸大戲的晒杈,但最后看完嫂伞,卻大部分僅僅是對于一些基本知識的介紹而已。這類實(shí)踐,讀者也可以通過閱讀蘋果官方文檔帖努,來獲得撰豺。

下面將書中的兩點(diǎn)比較有價(jià)值的知識點(diǎn),拿出來分享一下拼余。

內(nèi)存管理

現(xiàn)在的開發(fā)者污桦,可能大多是使用ARC來讓系統(tǒng)自動管理內(nèi)存,所以關(guān)于引用計(jì)數(shù)的知識匙监,可能相對來說比較欠缺凡橱。

接觸最多的內(nèi)存管理問題,可能集中在對象的循環(huán)引用問題上亭姥。書中詳細(xì)描述了引用計(jì)數(shù)的原理稼钩,也討論了循環(huán)引用問題產(chǎn)生的原因以及解決方案。

還有另外一個(gè)問題达罗,就是Core Foundation對象的內(nèi)存管理坝撑,無法使用ARC,需要開發(fā)者手動管理內(nèi)存粮揉。

CoreText排版引擎

可以說巡李,這個(gè)章節(jié),是此書比較有價(jià)值的內(nèi)容所在扶认。

書中提及击儡,使用CoreText技術(shù),可以對于富文本進(jìn)行復(fù)雜的排版蝠引,還可以實(shí)現(xiàn)對于圖片阳谍、鏈接的點(diǎn)擊效果。文章結(jié)合大量的實(shí)例螃概,進(jìn)行詳細(xì)介紹矫夯。

優(yōu)點(diǎn)是,相對于UIWebView吊洼,內(nèi)存占用少训貌,可以在后臺渲染,可以做更好的原生交互效果冒窍,交互效果可以更加細(xì)膩递沪。

缺點(diǎn)是,渲染出來的內(nèi)容综液,不能方便地支持內(nèi)容的復(fù)制款慨。需要自己處理很多復(fù)雜邏輯,比如鏈接點(diǎn)擊效果谬莹。

其它實(shí)戰(zhàn)技巧

講述了App Store審核檩奠,一些開發(fā)桩了、調(diào)試技巧,提高開發(fā)效率的技巧等等埠戳【可以有選擇性的看。

三整胃、iOS開發(fā)底層原理

本部分講解了iOS開發(fā)涉及的底層原理颗圣,通過了解語言實(shí)現(xiàn)細(xì)節(jié),將加深對于語言的理解屁使,從而能更加深入地理解語言背后的本質(zhì)在岂。

主要涉及以下三部分內(nèi)容。

Objective-C對象模型

通過了解Objective-C對象模型屋灌,來理解iOS如何支持KVO、Method Swizzling应狱、block等特性共郭。

此章節(jié)介紹的一些API,作者聲明疾呻,不會被App Store審核時(shí)拒絕除嘹,是安全的。

Tagged Pointer對象

Tagged Pointer對象岸蜗,可能相對來說比較陌生尉咕。這是蘋果在2013年,為了節(jié)省內(nèi)存和提高執(zhí)行效率璃岳,在64位程序上年缎,引入的概念。引入后铃慷,相關(guān)邏輯能減少一半的內(nèi)存占用单芜,并有3倍的訪問速度提升,以及100倍的創(chuàng)建犁柜、銷毀速度提升洲鸠。

Tagged Pointer通過在其最后一個(gè)bit位設(shè)置一個(gè)特殊標(biāo)記,用于將數(shù)據(jù)直接保存在指針本身中馋缅。專門用來存儲小的對象扒腕,例如NSNumber和NSDate。

對于64位設(shè)備萤悴,蘋果除了引入Tagged Pointer來優(yōu)化小的對象外瘾腰,對于普通的對象,其isa指針也進(jìn)行了優(yōu)化和調(diào)整覆履。

block對象模型

block的結(jié)構(gòu)體定義

**

struct Block_descriptor {
    unsigned long int reserved;
    unsigned long int size;
    void (*copy)(void *dst, void *src);
    void (*dispose)(void *);
};
struct Block_layout {
    void *isa;
    int flags;
    int reserved;
    void (*invoke)(void *, ...);
    struct Block_descriptor *descriptor;
    /* Imported variables. */
};

從上面代碼看出居灯,Block_layout就是對block結(jié)構(gòu)體的定義:

isa指針:指向表明該block類型的類祭务。

flags:按bit位表示一些block的附加信息,比如判斷block類型怪嫌、判斷block引用計(jì)數(shù)义锥、判斷block是否需要執(zhí)行輔助函數(shù)等。

reserved:保留變量岩灭。

invoke:函數(shù)指針拌倍,指向具體的block實(shí)現(xiàn)的函數(shù)調(diào)用地址。

descriptor:block的附加描述信息噪径,比如保留變量數(shù)柱恤、block的大小、進(jìn)行copy或dispose的輔助函數(shù)指針找爱。

variables:因?yàn)閎lock有閉包性梗顺,所以可以訪問block外部的局部變量。這些variables就是復(fù)制到結(jié)構(gòu)體中的外部局部變量或變量的地址车摄。

block的類型

block一共有三種類型寺谤,每種類型都有對應(yīng)的類,上述中isa指針就是指向這個(gè)類吮播。

_NSConcreteGlobalBlock:全局的靜態(tài)block变屁,不會訪問任何外部變量,不會涉及到任何拷貝意狠,比如一個(gè)空的block

_NSConcreteStackBlock:保存在棧中的block粟关,當(dāng)函數(shù)返回時(shí)被銷毀。

_NSConcreteMallocBlock:保存在堆中的block环戈,當(dāng)引用計(jì)數(shù)為0時(shí)被銷毀闷板。該類型的block都是由_NSConcreteStackBlock類型的block從棧中復(fù)制到堆中形成的。

block使用的注意事項(xiàng)

由于block會引用外部的變量院塞,比較容易造成循環(huán)引用蛔垢。對于這種問題,需要將引用的一方變成weak的迫悠,從而避免循環(huán)引用鹏漆。

總結(jié)

好了,全書的分享到此結(jié)束创泄,希望能夠幫助到大家艺玲。

雖然書中部分內(nèi)容有些過時(shí),或者離進(jìn)階有一段距離鞠抑,但也不乏值得借鑒的內(nèi)容饭聚。總體上搁拙,可以作為基礎(chǔ)參考讀物秒梳,但如果真的要學(xué)習(xí)進(jìn)階內(nèi)容法绵,建議不要抱太大期望。

以上酪碘,是我的個(gè)人看法朋譬,還是那句,不喜勿噴哈兴垦。



作者:Mr獅子先生
鏈接:http://www.reibang.com/p/2cb38cf6c6dc\

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末徙赢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子探越,更是在濱河造成了極大的恐慌狡赐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钦幔,死亡現(xiàn)場離奇詭異枕屉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鲤氢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門搀擂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铜异,你說我怎么就攤上這事哥倔〗占埽” “怎么了揍庄?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長东抹。 經(jīng)常有香客問我蚂子,道長,這世上最難降的妖魔是什么缭黔? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任食茎,我火速辦了婚禮,結(jié)果婚禮上馏谨,老公的妹妹穿的比我還像新娘别渔。我一直安慰自己,他們只是感情好惧互,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布哎媚。 她就那樣靜靜地躺著,像睡著了一般喊儡。 火紅的嫁衣襯著肌膚如雪拨与。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天艾猜,我揣著相機(jī)與錄音买喧,去河邊找鬼捻悯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛淤毛,可吹牛的內(nèi)容都是我干的今缚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钱床,長吁一口氣:“原來是場噩夢啊……” “哼荚斯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起查牌,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤事期,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后纸颜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兽泣,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年胁孙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唠倦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涮较,死狀恐怖稠鼻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狂票,我是刑警寧澤候齿,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站闺属,受9級特大地震影響慌盯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掂器,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一亚皂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧国瓮,春花似錦灭必、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至峡懈,卻和暖如春璃饱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肪康。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工荚恶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撩穿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓谒撼,卻偏偏與公主長得像食寡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子廓潜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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