Effective Object-C 52:1-5

一翻擒、熟悉Object-C

Object-C : 基于C語言基礎(chǔ) + 面向?qū)ο筇匦浴?/p>

1.了解Object-C 的起源

  • OC 是C 的超集澈魄。使用動態(tài)綁定的消息結(jié)構(gòu):運行時才會檢查對象類型复哆。接受一條消息后纸泡,究竟執(zhí)行何種代碼吱涉,有運行時環(huán)境決定而不是編譯器幅聘。
  • 核心: 運行時機制狼犯。

內(nèi)存管理:引用計數(shù)(reference counting)

重要的是理解 OC 的 <mark>動態(tài)綁定的消息結(jié)構(gòu)</mark>余寥。區(qū)別于其他函數(shù)調(diào)用的語言,接受的消息是由運行時環(huán)境決定而不是編譯器悯森。

區(qū)別:
1. “編譯期” 來完成的語音宋舷,性能提升需要重新編譯。
2. “運行時組件” 本質(zhì)是 “動態(tài)庫”更新運行時組件就可以提升性能瓢姻。

2.在類的頭文件中盡量少引用其他文件

  • 除非確有必要祝蝠,否則不要引入頭文件。一般:.h 向前聲明(@Class ClassName).m(實現(xiàn)文件)引入頭文件幻碱。
  • 把“該類遵循某協(xié)議” 的這條申明 移到“Class-continuation ”分類绎狭。 如果不行就把協(xié)議單獨放著一個頭文件中,然后引入收班。
  1. 在.h 里使用 @class 坟岔、 盡量 避免在 .h使用#import <> 不然增加編譯時間
  2. class-continuation category “class-continuation 分類”

3.多用字面量語法,少用與之等價的方法摔桦。

  • 應(yīng)該多使用“字面量語法” 創(chuàng)建字符串社付、數(shù)值承疲、數(shù)組、字典鸥咖。
  • 應(yīng)該通過“下標(biāo)”來訪問數(shù)組下標(biāo)或者字典所對應(yīng)的元素燕鸽。
  • “字面量語法” 創(chuàng)建數(shù)組、字典啼辣,要確保值內(nèi)不含nil啊研。
相比較于使用比如
NSNumber *someNumber =  [NSNumber numberWithInt: 1];
更推薦使用 ——  會使代碼更加整潔
NSNumber *somenNumber = @1;
例子:
    NSString *someString = @"hello world";
    NSNumber *floatNumber = @2.5f;
    NSNumber * doubleNumber= @3.12546;
    NSNumber *boolNumber = @YES;
    NSNumber *charNumber = @'A';
    int x = 5;
    float y = 6.755;
    NSNumber *expressionNumber = @(x * y);
    NSArray *array = @[@"1", @"2", @"3"];
    NSString *number1 = array[0];
    NSDictionary *dictionary = @{@"1":@"123123", @"11":@"123"};
    NSString *dicString = dictionary[@"1"];

4.多用類型常量,少用#define 預(yù)處理指令

  • 不要使用預(yù)處理指令定義常量鸥拧。 1.影響編譯器的工作效率党远。2.有人重定義了常量值編譯器也不會報錯。
  • 實現(xiàn)文件中使用 static const 來定義“只在編譯單元可見的常量”富弦。
  • 在頭文件中使用extern 來聲明全局常量沟娱。
#define ANIMATION_DURATION 03  //不推薦使用
static const NSTimeInterval kANimationDuration = 0.3; //推薦使用

5.用枚舉表示狀態(tài)、選項腕柜、狀態(tài)碼

  • 應(yīng)該多用枚舉來表示 狀態(tài)济似、專遞方法的選項、狀態(tài)碼的等值盏缤,給這些值取些易懂的名字砰蠢。
  • 處理枚舉類型的switch語句 不要實現(xiàn)default 分支。這樣加入新的枚舉值后唉铜,編譯器會提示開發(fā)著:switch有未處理的枚舉值台舱。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市打毛,隨后出現(xiàn)的幾起案子柿赊,更是在濱河造成了極大的恐慌俩功,老刑警劉巖幻枉,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诡蜓,居然都是意外死亡熬甫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蔓罚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椿肩,“玉大人,你說我怎么就攤上這事豺谈≈O螅” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵茬末,是天一觀的道長厂榛。 經(jīng)常有香客問我盖矫,道長,這世上最難降的妖魔是什么击奶? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任辈双,我火速辦了婚禮,結(jié)果婚禮上柜砾,老公的妹妹穿的比我還像新娘湃望。我一直安慰自己,他們只是感情好痰驱,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布证芭。 她就那樣靜靜地躺著,像睡著了一般担映。 火紅的嫁衣襯著肌膚如雪檩帐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天另萤,我揣著相機與錄音湃密,去河邊找鬼。 笑死四敞,一個胖子當(dāng)著我的面吹牛泛源,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忿危,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼达箍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铺厨?” 一聲冷哼從身側(cè)響起缎玫,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎解滓,沒想到半個月后赃磨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡洼裤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年邻辉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腮鞍。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡值骇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出移国,到底是詐尸還是另有隱情吱瘩,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布迹缀,位于F島的核電站使碾,受9級特大地震影響皱卓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜部逮,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一娜汁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兄朋,春花似錦掐禁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至峡扩,卻和暖如春蹭越,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背教届。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工响鹃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人案训。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓买置,卻偏偏與公主長得像,于是被迫代替她去往敵國和親强霎。 傳聞我的和親對象是個殘疾皇子忿项,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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