Effective Objective-C 2.0 閱讀筆記<二>

第三章 接口與API設(shè)計(jì)

1.Objective-C沒有命名空間,所以在命名上最好加上前綴以減小沖突的可能点晴,前綴建議采用三個(gè)字母(蘋果保留使用所有兩個(gè)字母前綴的權(quán)利)趴久。在開發(fā)自己的類庫時(shí)如果用了其他第三方類庫赌蔑,最好將第三方類庫也加上前綴俯在,這樣可以讓使用者使用你的類庫的同時(shí)也用你的類庫中用到第三方類庫(有點(diǎn)繞. . .)。

2.覆寫description方法娃惯,打印出一些有用信息幫助調(diào)試跷乐。

3.封裝一個(gè)對象時(shí),對外公開屬性最好是只讀(readonly)的趾浅,如果要在內(nèi)部修改可在對象內(nèi)部重新聲明為readwrite愕提。這種模式在AFNetworking有著大量的應(yīng)用。

4.私有方法最好加上前綴(p_ )潮孽,前綴不要只用一個(gè)下劃線(_)揪荣,這種做法是蘋果預(yù)留的。

5.容器類對象默認(rèn)執(zhí)行的是淺拷貝往史,若要執(zhí)行深拷貝需要自己編寫相關(guān)方法。

第四章 協(xié)議與分類

1.委托屬性常用weak來修飾佛舱;一個(gè)協(xié)議里的方法是optional的椎例,需要先判斷委托對象是否實(shí)現(xiàn)改方法挨决,如果經(jīng)常需要判斷則可考慮做個(gè)緩存。

2.weakunsafe_unretain的區(qū)別是前者在相關(guān)對象銷毀時(shí)需要自動(dòng)清空订歪,后者則不需要脖祈。

3.分類中不要添加屬性,必須添加的話可以采用關(guān)聯(lián)對象機(jī)制模擬刷晋,不推薦盖高。分類的設(shè)計(jì)初衷是擴(kuò)展類的功能,而屬性是用于數(shù)據(jù)的封裝眼虱,因此喻奥,屬性最好定義在主接口中。

4.class-continuation分類(在其他地方看到過叫匿名分類)捏悬,這本書多次提到了這個(gè)概念撞蚕,對應(yīng)的部分是:


//SonClass.h
@interface SonClass : FatherClass
@end

//SonClass.m
@interface SonClass()
{
//class-continuation分類
}
@end

5.class-continuation分類可以用來隱藏實(shí)現(xiàn)細(xì)節(jié),如系統(tǒng)的WebKit其實(shí)大部分是C++編寫的过牙,但是對外展示的卻是一套整潔的Objective-C接口甥厦。

6.匿名對象,常見的有:


@property (nonatomic, weak) id<MyDelegate> delegate;

這句話的意思是delegate遵循MyDelegate協(xié)議寇钉,至于它本身是什么類不關(guān)心刀疙。匿名分類也可以用來對一些第三方類庫進(jìn)行一些簡單封裝:


@protocol MyDatabaseConnection
-(void)connect;
-(void)disconnect;
-(BOOL)isConnected;
-(NSArray *)performQuery:(NSString*)query;
@end

//使用
@ protocol MyDatabaseConnection;

@interface MyDatabaseManager : NSObject
+sharedInstance;
-(id<MyDatabaseConnection>)connectionWithIdentifier:(NSString*)identifier;
@end

這里隱藏了數(shù)據(jù)庫連接所用的類(可能來自不同框架),而且在后續(xù)中扫倡,無需改變公共API庙洼,就能切換后端實(shí)現(xiàn)類。

6.關(guān)于匿名分類的一個(gè)面試題:


/*
`id`镊辕、`id<NSObject>`油够、`NSObject`的區(qū)別

`NSObject`:就是用來定義`NSObject`對象的。
`id`:它就是一個(gè)指針征懈,它可以指向的類型不僅限于`NSObject`石咬,如`NSProxy`。
`id<NSObject>`:它指向的對象要求實(shí)現(xiàn)`NSObject`所實(shí)現(xiàn)的協(xié)議卖哎,所以說它可以定義`NSObject`鬼悠、`NSProxy`(它也實(shí)現(xiàn)了`<NSObject>`)或者其他實(shí)現(xiàn)了`<NSObject>`的對象。
*/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亏娜,一起剝皮案震驚了整個(gè)濱河市焕窝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌维贺,老刑警劉巖它掂,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡虐秋,警方通過查閱死者的電腦和手機(jī)榕茧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來客给,“玉大人用押,你說我怎么就攤上這事“薪#” “怎么了蜻拨?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長桩引。 經(jīng)常有香客問我缎讼,道長,這世上最難降的妖魔是什么阐污? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任休涤,我火速辦了婚禮,結(jié)果婚禮上笛辟,老公的妹妹穿的比我還像新娘功氨。我一直安慰自己,他們只是感情好手幢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布捷凄。 她就那樣靜靜地躺著,像睡著了一般围来。 火紅的嫁衣襯著肌膚如雪跺涤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天监透,我揣著相機(jī)與錄音桶错,去河邊找鬼。 笑死胀蛮,一個(gè)胖子當(dāng)著我的面吹牛院刁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播粪狼,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼退腥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了再榄?” 一聲冷哼從身側(cè)響起狡刘,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎困鸥,沒想到半個(gè)月后嗅蔬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年购城,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吕座。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虐译。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瘪板,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出漆诽,到底是詐尸還是另有隱情侮攀,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布厢拭,位于F島的核電站兰英,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏供鸠。R本人自食惡果不足惜畦贸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望楞捂。 院中可真熱鬧薄坏,春花似錦、人聲如沸寨闹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽繁堡。三九已至沈善,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間椭蹄,已是汗流浹背闻牡。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绳矩,地道東北人罩润。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像埋酬,于是被迫代替她去往敵國和親哨啃。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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