編寫高質(zhì)量iOS與OS X代碼的52個有效方法上

第一章 熟悉Objective-C

1.了解起源

oc 使用“消息結(jié)構(gòu)”侧甫,運行時執(zhí)行的代碼由運行環(huán)境決定蹋宦,而函數(shù)調(diào)用的語言,由編譯器決定妆档。

在oc,有部分變量不算oc對象,如CGRect.

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

將引入頭文件的時間盡量延后,可以減少類的使用者所需引入的頭文件的數(shù)量敦捧。

一般的做法是:

#Person.h

@class A

#Person.m

#import A

但是如果你的類繼承自某個類,或者有代理方法习瑰,就必須放在.h


3.多使用字面量語法

這個語法方便好用秽荤,但是我還是有點不習(xí)慣。一般數(shù)組窃款,字典的我用它。

如 NsArray *animals = @[@"cat",@"dog"];常規(guī)寫法我就不寫了烟阐。

取數(shù)組下標(biāo): NSString *dog = animals[1];

NSDictionNary *dic = @{@"dog":@"first",@"cat":@"second"};

NSString *dog = dic[@"first"];

局限性:字面量的元素不能為nil,而且除了字符串以為必須為Foudation對象。并且都是不可變的 蜒茄,如需可變 后面需要加 mutableCopy.

4.多用類型常量,少用#define

預(yù)處理不含類型信息玩祟,在.m中加入static const,定義只在編譯單元可見。

5.用枚舉表示狀態(tài)空扎,選項

第二章:對象胜臊,消息,運行期

6.理解屬性

nonatmic象对,atomic,非原子性甫煞。表示線程不安全冠绢。atomic有鎖機制抚吠。但是耗費性能弟胀。所以,ios中還是用nonatmic

assign,weak 區(qū)別:assign修飾常量萧朝。weak 會 set nil.

strong,copy.一般字符串用copy.

其他的我就不說了夏哭。

7.對象內(nèi)部盡量直接訪問實例變量

10.關(guān)聯(lián)屬性

12.理解消息轉(zhuǎn)發(fā)機制

消息轉(zhuǎn)發(fā)分為2個階段:1.征詢接受者,所屬的類看其是否能夠動態(tài)添加方法竖配,以處理當(dāng)前這個@selector,這叫做動態(tài)方法解析,2.看看有沒有其他對象能處理這條消息用爪,若有龄减,則運行期系統(tǒng)會把消息轉(zhuǎn)給那個對象,于是消息轉(zhuǎn)發(fā)過程結(jié)束。否則署隘,啟動完整的轉(zhuǎn)發(fā)機制,運行期系統(tǒng)會把與消息有關(guān)的全部細節(jié)封裝到NSInvocation.再給接收者最后一次機會磁餐,令其設(shè)法解決當(dāng)前未處理的消息阿弃。

動態(tài)方法解析:

對象在收到無法解讀的消息后,會調(diào)用:

+(BooL)resloveInstanceMethod:(SEL)selector

備援接收者

-(id)forwardingTargetForSelctor:(SEL)selector


完整的消息轉(zhuǎn)發(fā)機制

創(chuàng)建NSInvocation對象渣淳,把未處理的消息有關(guān)的全部細節(jié)都封于其中,此對象包含選擇子鄙漏,目標(biāo)棺蛛,及參數(shù)。

實現(xiàn)此方法時旁赊,若發(fā)現(xiàn)某調(diào)用操作不應(yīng)由本類處理,則需調(diào)用超類的同名方法籍胯。直至NSObject.如果最后調(diào)用了NSObject方法离福,那么該犯法會繼續(xù)調(diào)用“doesNotRecongnizeSelector”.

-(void)forwardInvoation:(NSInvocation*)invocation


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鲸湃,更是在濱河造成了極大的恐慌,老刑警劉巖垃它,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異国拇,居然都是意外死亡,警方通過查閱死者的電腦和手機也殖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門务热,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捆毫,你說我怎么就攤上這事〖保” “怎么了损合?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長跋炕。 經(jīng)常有香客問我律适,道長辐烂,這世上最難降的妖魔是什么捂贿? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任厂僧,我火速辦了婚禮扣草,結(jié)果婚禮上颜屠,老公的妹妹穿的比我還像新娘。我一直安慰自己密浑,他們只是感情好粗井,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布街图。 她就那樣靜靜地躺著懒构,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痴脾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天滚朵,我揣著相機與錄音前域,去河邊找鬼。 笑死匿垄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的椿疗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼浅乔,長吁一口氣:“原來是場噩夢啊……” “哼铝条!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起班缰,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤埠忘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后莹妒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年运吓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拘哨。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓮床,靈堂內(nèi)的尸體忽然破棺而出产镐,到底是詐尸還是另有隱情隘庄,我是刑警寧澤癣亚,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布述雾,位于F島的核電站玻孟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏黍翎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一斗忌、第九天 我趴在偏房一處隱蔽的房頂上張望旺聚。 院中可真熱鬧,春花似錦砰粹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至爽航,卻和暖如春乾忱,著一層夾襖步出監(jiān)牢的瞬間历极,已是汗流浹背窄瘟。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工蹄葱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人图云。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓右蕊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親饶囚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

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