這本書沒有OC語言的基礎(chǔ)知識席吴,講的是如何高效運用這門語言
第一章 熟悉OC
1婆誓、什么是OC
·OC是為C語言添加了面向?qū)ο筇匦酝耍荂的超集羹饰。OC使用動態(tài)綁定的消息結(jié)構(gòu)握爷,也就是說,在運行時才會檢查對象類型严里。接收一條消息之后,究竟執(zhí)行什么代碼追城,由運行時環(huán)境而非編譯器來決定
2刹碾、在類的頭文件中盡量少引入其他頭文件
·除非一定需要,否則不要引入頭文件座柱。一般來說迷帜,在某個類的頭文件中使用向前聲明來提及別的類,并在實現(xiàn)文件中引入哪些類的頭文件色洞,這樣做可以盡量降低類與類之前的耦合戏锹。
3、多用字面量語法火诸,少用與之等價的方法
使用字面量語法锦针,可以縮減源代碼長度,使代碼更為易讀
NSNumber *someNumber = [NSNumber numberWithInt:1];
使用字面量能令代碼更為整潔置蜀,沒有多余的語法成分
NSNumber *someNumber = @1奈搜;
字面量數(shù)組
我們先看一下不使用字面量語法創(chuàng)建數(shù)組的方式:
NSArray *array = [NSArray arrayWithObjects:@"object1", @"object2", @"object3", @"object4", nil];
使用字面量語法創(chuàng)建的數(shù)組
NSArray *array = @[@"object1", @"object2" , @"object3", @"object4"];
不僅簡單,而且還利于操作數(shù)組
普通語法:
[array objectAtIndex:1]
字面量語法:
array[1];
4盯荤、多使用常量類型馋吗,少用#define預(yù)處理指令
不要用預(yù)處理指令定義常量。這樣定義出來的常量不含類型信息秋秤,編譯器只是會在編譯前據(jù)此執(zhí)行查找與替換操作宏粤。即使有人重新定義了常量值,編譯器也不會產(chǎn)生警告信息灼卢,這將導(dǎo)致應(yīng)用程序中的常量值不一致绍哎。
在實現(xiàn)文件中使用static const來定義只在編譯單元內(nèi)可見的常量。由于此類常量不在全局符號表中芥玉,所以無需為其名稱加前綴蛇摸。
在頭文件中使用extern來聲明全局常量,并在相關(guān)實現(xiàn)文件中定義其值灿巧。這種常量要出現(xiàn)在全局符號表中赶袄,所以其名稱要加以區(qū)隔,通常用與之相關(guān)的類名做前綴抠藕。
5饿肺、用枚舉表示狀態(tài)、選項盾似、狀態(tài)碼
應(yīng)該用枚舉來表示狀態(tài)機的狀態(tài)敬辣、傳遞給方法的選項遺跡狀態(tài)碼等值雪标,給這些值起個易懂的名字。
如果把傳遞給某個方法的選項表示為枚舉型溉跃,而多個選項又可同時使用村刨,那么就將各選項值定義為2的冪,以便通過按位或者操作將其組合起來撰茎。
用NS_ENUM與NS_OPTIONS宏來定義枚舉類型嵌牺,并指明其底層數(shù)據(jù)類型。這樣做可以確保枚舉是用開發(fā)者所選的底層數(shù)據(jù)類型實現(xiàn)出來的龄糊,而不會采用編譯器所選的類型逆粹。
在處理枚舉類型的switch語句中不要實現(xiàn)default分支。這樣的話炫惩,加入新枚舉之后僻弹,編譯器就會提示開發(fā)者:switch語句并未處理所有的枚舉。