【objc-zen-book】4.Category & NSNotification

這個小系列是從 "Zen and the Art of the Objective-C Craftsmanship"中 進行的摘抄瓮钥,共分成6篇维贺,大部分是講代碼風格及美化,偶爾看看也不錯膘格。


Category

  1. category 方法前加上自己的小寫前綴以及下劃線谷婆。(真的很丑,但是蘋果也推薦這樣做)

    - (id)zoc_myCategoryMethod
    

    這是非常必要的径玖。因為如果在擴展的 category 或者其他 category 里面已經(jīng)使用了同樣的方法名痴脾,會導致不可預計的后果。(會調用最后一個加載的方法)

    // 推薦
    @interface NSDate (ZOCTimeExtensions)
    - (NSString *)zoc_timeAgoShort;
    @end
    
    // 不推薦
    @interface NSDate (ZOCTimeExtensions)
    - (NSString *)timeAgoShort;
    @end
    
  2. 推薦使用Category來根據(jù)不同功能對方法進行分組梳星。

    @interface NSDate : NSObject <NSCopying, NSSecureCoding>
    
    @property (readonly) NSTimeInterval timeIntervalSinceReferenceDate;
    
    @end
    
    @interface NSDate (NSDateCreation)
    
    + (instancetype)date;
    + (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
    + (instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti;
    + (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
    + (instancetype)dateWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date;
    // ...
    @end
    

NSNotification

當你定義你自己的 NSNotification 的時候你應該把你的通知的名字定義為一個字符串常量赞赖,就像你暴露給其他類的其他字符串常量一樣。你應該在公開的接口文件中將其聲明為 extern 的冤灾, 并且在對應的實現(xiàn)文件里面定義前域。

因為你在頭文件中暴露了符號,所以你應該按照統(tǒng)一的命名空間前綴法則韵吨,用類名前綴作為這個通知名字的前綴匿垄。(通常在頭文件中對外提供的常量都需要加上前綴,聲明extern + const归粉,并且并不是在頭文件中定義椿疗,而是在實現(xiàn)文件中定義。如果不是對外公開的常量糠悼,那么通常直接在實現(xiàn)文件里聲明為static + const届榄,并且也要加上前綴,直接在后面進行定義倔喂。)

同時铝条,用一個 Did/Will 這樣的動詞以及用 "Notifications" 后綴來命名這個通知也是一個好的實踐。

// Foo.h
extern NSString * const ZOCFooDidBecomeBarNotification

// Foo.m
NSString * const ZOCFooDidBecomeBarNotification = @"ZOCFooDidBecomeBarNotification";

所有文章
【objc-zen-book】1.條件語句&Case語句的注意
【objc-zen-book】2.命名
【objc-zen-book】3.類
【objc-zen-book】4.Category & NSNotification
【objc-zen-book】5.美化代碼 & 代碼組織
【objc-zen-book】6.Block & self的循環(huán)引用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末席噩,一起剝皮案震驚了整個濱河市班缰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌班挖,老刑警劉巖鲁捏,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異萧芙,居然都是意外死亡给梅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門双揪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來动羽,“玉大人,你說我怎么就攤上這事渔期≡讼牛” “怎么了渴邦?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拘哨。 經(jīng)常有香客問我谋梭,道長,這世上最難降的妖魔是什么倦青? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任瓮床,我火速辦了婚禮,結果婚禮上产镐,老公的妹妹穿的比我還像新娘隘庄。我一直安慰自己,他們只是感情好癣亚,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布丑掺。 她就那樣靜靜地躺著,像睡著了一般述雾。 火紅的嫁衣襯著肌膚如雪街州。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天绰咽,我揣著相機與錄音菇肃,去河邊找鬼地粪。 笑死取募,一個胖子當著我的面吹牛,可吹牛的內容都是我干的蟆技。 我是一名探鬼主播玩敏,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼质礼!你這毒婦竟也來了旺聚?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤眶蕉,失蹤者是張志新(化名)和其女友劉穎砰粹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體造挽,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡碱璃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了饭入。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖学密,靈堂內的尸體忽然破棺而出其监,到底是詐尸還是另有隱情蚓让,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布讥珍,位于F島的核電站历极,受9級特大地震影響,放射性物質發(fā)生泄漏衷佃。R本人自食惡果不足惜执解,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纲酗。 院中可真熱鬧衰腌,春花似錦、人聲如沸觅赊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吮螺。三九已至饶囚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸠补,已是汗流浹背萝风。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留紫岩,地道東北人规惰。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像泉蝌,于是被迫代替她去往敵國和親歇万。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容