去年,我在微博上發(fā)起了100天閱讀博文的行動(dòng)系忙。具體就是叁鉴,每天讀一篇 iOS 開發(fā)相關(guān)的技術(shù)博文怜姿,并在微博上分享自己的讀后感团搞。對(duì)于在開發(fā)岗照、工作蚕钦、和面試中常見的問題亭病,通過這段時(shí)間...
去年,我在微博上發(fā)起了100天閱讀博文的行動(dòng)系忙。具體就是叁鉴,每天讀一篇 iOS 開發(fā)相關(guān)的技術(shù)博文怜姿,并在微博上分享自己的讀后感团搞。對(duì)于在開發(fā)岗照、工作蚕钦、和面試中常見的問題亭病,通過這段時(shí)間...
第二十條:為私有方法名加前綴 【要點(diǎn)】 給私有方法的名稱加上前綴,這樣可以很容易的將其同公開方法區(qū)分開嘶居。 不要單用一個(gè)下劃線做私有方法的前綴罪帖,因?yàn)檫@種做法是預(yù)留給蘋果公司的。
第十九條:使用清晰而協(xié)調(diào)的命名方式 【要點(diǎn)】 起名時(shí)應(yīng)遵從標(biāo)準(zhǔn)的Objective-C命名規(guī)范食听,這樣創(chuàng)建出來(lái)的接口更容易為開發(fā)者所理解胸蛛。 方法名要言簡(jiǎn)意賅,從左至右讀起來(lái)要像...
第十八條:盡量使用不可變對(duì)象 設(shè)計(jì)類的時(shí)候樱报,應(yīng)充分運(yùn)用屬性來(lái)封裝數(shù)據(jù)葬项。 在使用屬性時(shí),則可將其聲明為“只讀”迹蛤。 默認(rèn)情況下民珍,屬性是“既可讀又可寫的”,這樣設(shè)計(jì)出來(lái)的類都是“可...
第十七條:實(shí)現(xiàn)description方法 測(cè)試程序時(shí)盗飒,經(jīng)常需要打印并查看對(duì)象信息嚷量。 最常用的做法是: NSLog(@“object = %@“,object); 在構(gòu)建需要打...
第十六條:提供“全能初始化方法” 我們把這種可為對(duì)象提供必要信息以便其能完成工作的初始化方法叫做“全能初始化方法”(designated initializer)。 如果創(chuàng)建...
第十五條:用前綴避免命名空間沖突 Objective-C沒有其他語(yǔ)言哪種內(nèi)置的命名空間(namespace)機(jī)制逆趣。 避免命名沖突的唯一辦法就是變相實(shí)現(xiàn)命名空間:為所有名稱都加...
第十四條:理解“類對(duì)象”的用意 前面介紹了消息轉(zhuǎn)發(fā)的機(jī)制蝶溶。然而,消息的接收者究竟是何物宣渗? 是對(duì)象自身嗎抖所? 運(yùn)行期系統(tǒng)如何知道某個(gè)對(duì)象的類型呢? 對(duì)象類型并非在編譯期就綁定好了...
第十三條:用“方法調(diào)配技術(shù)“調(diào)試”黑盒方法“ 在消息解析時(shí)痕囱,與給定的選擇子名稱相對(duì)應(yīng)的方法是不是也可以在運(yùn)行時(shí)改變呢田轧? 沒錯(cuò),就是這樣鞍恢。 若能善用此特性傻粘,則可發(fā)揮出巨大優(yōu)勢(shì)每窖,...
第十二條:理解消息轉(zhuǎn)發(fā)機(jī)制 上一條我們說了對(duì)象的消息傳遞機(jī)制很重要,那么問題來(lái)了----對(duì)象在收到無(wú)法解讀的消息之后會(huì)發(fā)生什么呢弦悉? 若想令類能理解某條消息窒典,我們必須以程序碼實(shí)...
第十一條:理解objc_msgSend的作用 對(duì)象調(diào)用方法是Objective-C中經(jīng)常使用的功能。用Objective-C的術(shù)語(yǔ)來(lái)說叫“傳遞消息”(passing a me...
第十條:在既有類中使用關(guān)聯(lián)對(duì)象存放自定義數(shù)據(jù) 有時(shí)需要在對(duì)象中存放相關(guān)信息警绩。 這時(shí)我們通常會(huì)從對(duì)象所屬的類中繼承一個(gè)子類崇败,然后改用這個(gè)子類對(duì)象。 并非所有的情況下都能這么做肩祥,...
第九條:以“類族模式”隱藏實(shí)現(xiàn)細(xì)節(jié) “類族”(class cluster)是一種很有用的模式(pattern),可以隱藏“抽象基類”(abstract base class)...
第八條 :理解“對(duì)象等同性”這一概念 根據(jù)“等同性“(equality)來(lái)比較對(duì)象是一個(gè)非常有用的功能缩膝。 不過按照”==“操作符比較出來(lái)的結(jié)果未必是我們想要的混狠,因?yàn)樵摬僮鞅容^...
第七條 :在對(duì)象內(nèi)部盡量直接訪問實(shí)例變量 在對(duì)象之外訪問實(shí)例變量是,總是應(yīng)該通過屬性來(lái)做疾层,那么在對(duì)象內(nèi)部訪問實(shí)例變量時(shí)又該如何呢将饺? 除了幾種特殊情況外,在對(duì)象內(nèi)部讀取實(shí)例變量...
第六條:理解“屬性”這一概念 “屬性”(property)是Objective-C的一項(xiàng)特性痛黎,用于封裝對(duì)象中的數(shù)據(jù)予弧。 Objective-C對(duì)象通常會(huì)把其所需的數(shù)據(jù)保存為各種...
第五條:用枚舉表示狀態(tài)掖蛤、選項(xiàng)、狀態(tài)碼 系統(tǒng)框架中頻繁用到此類型井厌,而開發(fā)者容易忽視它蚓庭。在以一系列常量來(lái)表示錯(cuò)誤狀態(tài)碼或可組合的選項(xiàng)時(shí),極宜使用枚舉為其命名仅仆。 枚舉是一種常量命名...
第四條:多用類型常量,少用#define預(yù)處理指令 使用#define定義的常量沒有類型信息 使用const static 定義的常量是帶有類型信息的 不要用預(yù)處理指令定義常...
第三條:多用字面量語(yǔ)法港柜,少用與之等價(jià)的方法 字符串字面量 語(yǔ)法如下:NSString *someString = @“Effective Objective-C 2.0”; ...
第二條:在類的頭文件中盡量少引入其他頭文件 一般來(lái)說,應(yīng)在某個(gè)類的頭文件中使用“向前聲明”類提及別的類咳榜,并在實(shí)現(xiàn)文件中引入那些類的頭文件夏醉。這樣做可以盡量降低類之間的耦合(co...