一扒吁、多用字面量語法**
1火鼻、字面量語法指的是直接使用@加上值對(duì)Foundation的常用的類進(jìn)行初始化室囊,例如NSString雕崩,NSArray,NSDictionary融撞,NSNumber盼铁。
2、字面量語法的好處就是縮短源代碼的長(zhǎng)度尝偎,增加可讀性與整潔度饶火。
3、使用字面量創(chuàng)建數(shù)組或者字典對(duì)象的時(shí)候致扯,比使用非字面量創(chuàng)建數(shù)組對(duì)象的好處就是在字面量創(chuàng)建數(shù)組或者對(duì)象時(shí)如果值為nil就會(huì)報(bào)出異常肤寝,而非字面量創(chuàng)建數(shù)組或者字典對(duì)象不會(huì)報(bào)異常,直到讀取數(shù)組或者字典中的值為nil的時(shí)候才會(huì)報(bào)異常抖僵。所以使用字面量語法更為安全鲤看。
二、多用類型常量耍群,少用define預(yù)處理指令
1义桂、聲明一個(gè)常量時(shí)我們經(jīng)常會(huì)用到#define TIMEINTERVAL 1.0之類的預(yù)處理指令找筝。但是使用這樣的預(yù)處理指令在引入頭文件之后,所有的TIMEINTERVAL都會(huì)被設(shè)置為1.0慷吊,且TIMEINTERVAL的類型并沒有明確說明袖裕。
2、解決方案:使用static const CGFloat kTimeInterval = 1.0;
這樣的語法對(duì)常量進(jìn)行定義溉瓶。這樣的好處是明確地指明了該常量的類型急鳄,增加了閱讀性。ps:開頭加上k表示常量堰酿,使用staic和const進(jìn)行聲明的好處是當(dāng)嘗試對(duì)常量進(jìn)行改變的時(shí)候編譯器就會(huì)報(bào)錯(cuò)提醒攒岛,添加staic的原因是為了防止當(dāng)多個(gè).m文件中聲明了命名一樣的常量時(shí)報(bào)錯(cuò),報(bào)錯(cuò)的原因是使用const字段時(shí)編譯器會(huì)創(chuàng)建一個(gè)外部符號(hào)胞锰,如果存在兩個(gè)一樣的外部符號(hào)那么就會(huì)報(bào)錯(cuò),等同于創(chuàng)建了兩個(gè)一樣變量名的變量一樣灾锯。添加了static就不會(huì)創(chuàng)建外部符號(hào),所以不存在一樣符號(hào)名的問題自然也不會(huì)編譯報(bào)錯(cuò)嗅榕。
3顺饮、若類型常量不需要公開,那么不應(yīng)該添加在頭文件中凌那,而是在實(shí)現(xiàn)文件即.m文件中進(jìn)行聲明兼雄。
4、如果需要對(duì)類型常量進(jìn)行公開那么在實(shí)現(xiàn)文件中的類型常量就要定義為CGFloat const kTimeInterval = 1.0;
而在頭文件中帽蝶,需要使用extern關(guān)鍵字對(duì)類型常量進(jìn)行聲明extern CGFloat const kTimeInterval;
赦肋。即相當(dāng)于在頭文件中聲明,在實(shí)現(xiàn)文件中定義励稳。
5佃乘、注意類型常量的命名,防止命名沖突導(dǎo)致數(shù)據(jù)對(duì)不上驹尼。一般使用類名作為前綴來區(qū)分趣避。例如:UIImageViewTimeInterval