Objective-C官方文檔

  1. 如果要給一個屬性不一樣的訪問方法苞轿,需要在property里進行指定瘦锹,如下:
    

@property(getter = isFinished) BOOL finished;

  1. 可以自定義變量名字,需要定義跳轉(zhuǎn)的值方库,如下:
    @implementation class
    @sythesize propertyName = instanceVarivalbeName
    ….
    @end
  2. 一定要保證weak屬性在被調(diào)用之前不為nil结序,比如:
    if(self.weakProperty) {….}
  3. Unsafe Unretained: 有些不支持weak的屬性,比如NSTextView纵潦,NSFont和NSColorSpace等徐鹤,使用方法如下:
    @property (unsafe_unretained) NSObject *unsafeProperty;
    NSObject *__unsafe_unretained unsafeReference;
    unsafe 引用 和weak引用類似垃环,但是他在目標對象為nil時不會被置為nil。所以有可能存在野指針的情況返敬。
  4. 處理兩個對象時遂庄,==操作符表示測試兩個不同指針是否指向同一個對象;
    如果要測試兩個對象是否含有同樣的值劲赠,應當使用 isEqual方法涛目。
  5. 在運行時,通過category添加的方法和通過原始class添加的方法沒有區(qū)別凛澎。
  6. 除了可以給現(xiàn)有class添加方法霹肝,category也可以用來分割復雜class的各種實現(xiàn)。
    
  7. 如果一個在category里定義的方法名和原始class或者另一個category中定義的方法名一樣塑煎,那么運行時執(zhí)行哪一個方法名的方法就不一定了沫换。
    
  8. 為了防止未定義的行為,最佳實踐是給方法名添加前綴最铁。
    
  9. extension和category功能類似讯赏,但是extension只可以給已知源碼的class添加方法。
    
  10. class extension經(jīng)常用來給public class添加private方法或者屬性冷尉。 例如漱挎,定義一個屬性為readonly在外部,但是內(nèi)部定義該屬性為readwrite网严,為了內(nèi)部能直接改變屬性值识樱。
    
  11. 和class extension不同,associated reference 不影響原始class的定義和實現(xiàn)震束,所以說即便沒有對原始數(shù)據(jù)的訪問權(quán)限怜庸,也可以使用。objc_setAssociatedObject
    
  12. NSArray和NSDictionary只可以用來收集OC對象垢村,其它對象必須封裝在OC對象之內(nèi)才可以init到上述類型之中割疾。
    
  13. NSNumber是一個類簇。意思是當你在運行時創(chuàng)建一個實例時嘉栓,你會得到一個具體的子類來存儲提供的值宏榕,就當那個對象是NSNumber的子類就好。
    
  14. 在sort的時候:
    a) NSArray類型由于是不可變侵佃,所以調(diào)用sort方法會返回一個新的array對象麻昼。
    b) Mutable的Array可以直接sort,不需要返回新array
  15. 如果在collection中想表達”no object”馋辈,可以使用NSNull類
  16. 很多collection類實現(xiàn)了NSFastEnumeration協(xié)議抚芦,包括NSArray,NSSet和NSDictionary。
  17. 在快速遍歷collection時是不可以修改值的叉抡,即便是mutable的變量尔崔。如果你打算add或者remove一個對象,會導致一個運行時異常褥民。
  18. 通過反復調(diào)用nextObject也可以遍歷所有內(nèi)容季春,比如:while((eachObject = [enumerator nextObject])){……}
  19. 如果真的想在條件處賦值,則需要將賦值語句加括號消返,比如:if((someVar = YES))
  20. 用快速遍歷比收工用遍歷對象要快载弄。
  21. 如果在block之后修改了block內(nèi)部讀取的值,因為該值被capture了撵颊,所以在block生效時不會收影響侦锯。比如:int value = 42;void (^testBlock)(void) = ^{ NSLog(“%d”,value);}//print 42 while extvalue = 84;testBlock();
  22. 如果想改變block中的引用值,需要用__block標志秦驯。這時候該值的生命周期在block內(nèi)外都是有效的。__block int value = 42;void (^testBlock)(void) = ^{ NSLog(“%d”,value);}//print 84 while extvalue = 84;testBlock();
  23. block類型應當設置其類型為copy挣棕,因為block需要copy以保證保持原始調(diào)用域的環(huán)境译隘。不過在ARC下不需要考慮這個問題,因為block自動會以copy形式定義洛心。
  24. 下述方法遍歷每一個鍵值對更加方便:NSDictionary *dict = …[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj,BOOL *stop){ NSLog(“key:%@,value:%@”,key,object);}
  25. 創(chuàng)建NSError時固耘,需要定義自己的errorDomain,應該形式如下:com.companyName.appOrFrameworkName.ErrorDomain創(chuàng)建完整的Error如下:NSString *domain = @”com.MyCompany.MyApplication.ErrorDomain”;NSString *desc = NSLocalizedString(@”Unable to…”,@””);NSDictionary *userInfo = @{NSLocalizedDescriptionKey:desc};NSError *error = [NSError errorWithDomain:domain code:-101 userInfo:userInfo];
  26. 自定義類應當使用三個字母的前綴词身。命名最好用名詞厅目,以表示所指,例如:NSWindow, CAAnimation等
  27. 如果method需要一個或多個參數(shù)法严,方法名需要暗示出每一個參數(shù)损敷,比如:subStringFromIndex: writeToUrl:
  28. 方法名的第一部分應當暗示方法的主要意圖或者方法的返回值。如果返回值很重要深啤,可以用復合詞拗馒,比如mutableCopy. 如果一個方法返回一個action,第一個單詞應當暗示那個action溯街,例如write…或者enumerate…
  29. 如果一個方法需要傳入error參數(shù)诱桂,此參數(shù)應該排在最后;如果一個方法含有block呈昔,block應當排在最后挥等,為了使得方法名在調(diào)用時盡量處于統(tǒng)一行,方便可讀堤尾。因此盡量在方法中少包含block變量肝劲。
  30. 少寫縮寫。
  31. 工廠類方法在創(chuàng)建時應當以類名字作為開頭(無前綴),除非類的子類存在相同的工廠方法了涡相。例如 [NSMutableArray array];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哲泊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子催蝗,更是在濱河造成了極大的恐慌切威,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丙号,死亡現(xiàn)場離奇詭異先朦,居然都是意外死亡,警方通過查閱死者的電腦和手機犬缨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門喳魏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怀薛,你說我怎么就攤上這事刺彩。” “怎么了枝恋?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵创倔,是天一觀的道長。 經(jīng)常有香客問我焚碌,道長畦攘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任十电,我火速辦了婚禮知押,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹃骂。我一直安慰自己台盯,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布畏线。 她就那樣靜靜地躺著爷恳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪象踊。 梳的紋絲不亂的頭發(fā)上温亲,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音杯矩,去河邊找鬼栈虚。 笑死,一個胖子當著我的面吹牛史隆,可吹牛的內(nèi)容都是我干的魂务。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粘姜!你這毒婦竟也來了鬓照?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤孤紧,失蹤者是張志新(化名)和其女友劉穎豺裆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體号显,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡臭猜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了押蚤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔑歌。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖揽碘,靈堂內(nèi)的尸體忽然破棺而出次屠,到底是詐尸還是另有隱情,我是刑警寧澤雳刺,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布帅矗,位于F島的核電站,受9級特大地震影響煞烫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜累颂,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一滞详、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧紊馏,春花似錦料饥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赫编,卻和暖如春巡蘸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背擂送。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工悦荒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘹吨。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓搬味,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子碰纬,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

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