第1章 熟悉Objective-C

第1條 :了解Objective-C語言的起源

Objective-C為C語言添加了面向?qū)ο筇匦裕瞧涑臃摺bjective-C使用動(dòng)態(tài)綁定的消息結(jié)構(gòu)解寝,也就是說,在運(yùn)行時(shí)才會(huì)檢查對(duì)象類型觅闽。接收一條消息之后帝雇,究竟應(yīng)執(zhí)行何種代碼,由運(yùn)行期環(huán)境而非編譯器決定蛉拙。

理解C語言的核心概念有助于寫好Objective-C程序尸闸。尤其要掌握內(nèi)存模型與指針。

指針內(nèi)存分配在棧上,實(shí)例內(nèi)存分配在堆上吮廉。

第2條 :在類的頭文件中盡量少引入其他頭文件

除非確有必要睹栖,否則不要引入頭文件。一般來說茧痕,應(yīng)在某個(gè)類的頭文件中使用向前聲明來提及別的類野来,并在實(shí)現(xiàn)文件中引入那些類的頭文件。這樣做可以降低類之間的耦合(coupling)踪旷。

有時(shí)無法使用向前聲明曼氛,比如要聲明某個(gè)類遵循一項(xiàng)協(xié)議。這種情況下令野,盡量把“該類遵循協(xié)議”的這條聲明移至“class-continuation分類”中舀患。如果不行的話,就把協(xié)議單獨(dú)放在一個(gè)頭文件中气破,然后將其引入聊浅。

第3條 :多用字面量語法,少用與之等價(jià)的方法

應(yīng)該使用字面量語法來創(chuàng)建字符串现使、數(shù)值低匙、數(shù)組、字典碳锈。與創(chuàng)建此類對(duì)象的常規(guī)方法相比顽冶,這么做更加簡(jiǎn)明扼要。

應(yīng)該通過取下標(biāo)操作來訪問數(shù)組下標(biāo)或字典中的鍵所對(duì)應(yīng)的元素售碳。

用字面量語法創(chuàng)建數(shù)組或字典時(shí)强重,若值中有nil,則會(huì)拋出異常贸人。因此间景,務(wù)必確保值中不含nil。

NSString *someString = @"Effective Objective-C 2.0";

NSNumber *someNumber = @1;

NSArray *array = @[@"cat", @"dog"]; ??

NSDictionary *dic = @{@"Matt":@"firstName", @"Leo":@"lastName"};

使用字面量語法創(chuàng)建出來的字符串艺智、數(shù)組倘要、字典對(duì)象都是不可變的(immutable)。若想要可變版本的對(duì)象力惯,則需復(fù)制一份:

NSMutableArray *mutableArray = [@[@1, @2, @3, @4, @5] ?mutableCopy];

第4條:多用類型常量碗誉,少用#define預(yù)處理指令

不要用預(yù)處理指令定義常量。這樣定義出來的常量不含類型信息父晶,編譯器只會(huì)在編譯前據(jù)此執(zhí)行查找與替換操作哮缺。即使有人重新定義了常量值,編譯器也不會(huì)產(chǎn)生警告信息甲喝,這將導(dǎo)致應(yīng)用程序中的常量值不一致尝苇。

在實(shí)現(xiàn)文件中使用static const來定義“只在編譯單元內(nèi)可見的常量”(translation-unit-specific constant)。由于此類常量不在全局符號(hào)列表中,所以無需為其名稱加前綴糠溜。例:在.m中static const NSTimeInterval kAnimationDuration = 0.3;

在頭文件中使用extern來聲明全局變量淳玩,并在相關(guān)實(shí)現(xiàn)文件中定義其值。這種常量要出現(xiàn)在全局符號(hào)表中非竿,所以其名稱應(yīng)加以區(qū)別蜕着,通常用與之相關(guān)的類名做前綴。例如:? ? ? ? ? ? ? ? ? ? ? .h中: extern NSString *const EOCLoginManagerDidNotification;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .m中:NSString *const EOCLoginManagerDidNotification = @"EOCLoginManagerDidNotification";

第5條:用枚舉表示狀態(tài)红柱、選項(xiàng)承匣、狀態(tài)碼

應(yīng)該用枚舉來表示狀態(tài)機(jī)的狀態(tài)、傳遞給方法的選項(xiàng)以及狀態(tài)碼等值锤悄,給這些值起個(gè)易懂的名字韧骗。

如果把傳遞給某個(gè)方法的選項(xiàng)表示為枚舉類型,而多個(gè)選項(xiàng)又可同時(shí)使用零聚,那么就將個(gè)選項(xiàng)值定義為2的冪袍暴,以便通過按位或操作將其組合起來。

用NS_ENUM與NS_OPTIONS宏來定義枚舉類型隶症,并指明其底層數(shù)據(jù)類型政模。這樣做可以確保枚舉是用開發(fā)者所選的底層數(shù)據(jù)類型實(shí)現(xiàn)出來的,而不會(huì)采用編譯器所選的類型沿腰。

在處理枚舉類型的switch語句中不要實(shí)現(xiàn)default分支览徒。這樣的話,加入新枚舉之后颂龙,編譯器就會(huì)提示開發(fā)者:switch語句并未處理所有枚舉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纽什,一起剝皮案震驚了整個(gè)濱河市措嵌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芦缰,老刑警劉巖企巢,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異让蕾,居然都是意外死亡浪规,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門探孝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笋婿,“玉大人,你說我怎么就攤上這事顿颅「妆簦” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)庇配。 經(jīng)常有香客問我斩跌,道長(zhǎng),這世上最難降的妖魔是什么捞慌? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任耀鸦,我火速辦了婚禮,結(jié)果婚禮上啸澡,老公的妹妹穿的比我還像新娘袖订。我一直安慰自己,他們只是感情好锻霎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布著角。 她就那樣靜靜地躺著,像睡著了一般旋恼。 火紅的嫁衣襯著肌膚如雪吏口。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天冰更,我揣著相機(jī)與錄音产徊,去河邊找鬼。 笑死蜀细,一個(gè)胖子當(dāng)著我的面吹牛舟铜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奠衔,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谆刨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了归斤?” 一聲冷哼從身側(cè)響起痊夭,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脏里,沒想到半個(gè)月后她我,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迫横,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年番舆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矾踱。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恨狈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出介返,到底是詐尸還是另有隱情拴事,我是刑警寧澤沃斤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站刃宵,受9級(jí)特大地震影響衡瓶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜牲证,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一哮针、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坦袍,春花似錦十厢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奠宜,卻和暖如春包颁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背压真。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工娩嚼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滴肿。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓岳悟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親泼差。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贵少,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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