OC編程筆記

  1. 如果要給一個(gè)屬性不一樣的訪問方法拣挪,需要在property里進(jìn)行指定牺六,如下:
    @property(getter = isFinished) BOOL finished;

  2. 可以自定義變量名字走趋,需要定義跳轉(zhuǎn)的值称簿,如下:
    @implementation class
    @sythesize propertyName = instanceVarivalbeName
    ….
    @end

  3. 一定要保證weak屬性在被調(diào)用之前不為nil,比如:
    if(self.weakProperty) {….}

  4. Unsafe Unretained: 有些不支持weak的屬性,比如NSTextView,NSFont和NSColorSpace等,使用方法如下:
    @property (unsafe_unretained) NSObject *unsafeProperty;
    NSObject *__unsafe_unretained unsafeReference;
    unsafe 引用 和weak引用類似胚膊,但是他在目標(biāo)對(duì)象為nil時(shí)不會(huì)被置為nil。所以有可能存在野指針的情況奈应。

  5. 處理兩個(gè)對(duì)象時(shí)澜掩,==操作符表示測(cè)試兩個(gè)不同指針是否指向同一個(gè)對(duì)象购披;
    如果要測(cè)試兩個(gè)對(duì)象是否含有同樣的值杖挣,應(yīng)當(dāng)使用 isEqual方法。

  6. 在運(yùn)行時(shí)刚陡,通過category添加的方法和通過原始class添加的方法沒有區(qū)別惩妇。

  7. 除了可以給現(xiàn)有class添加方法,category也可以用來分割復(fù)雜class的各種實(shí)現(xiàn)筐乳。

  8. 如果一個(gè)在category里定義的方法名和原始class或者另一個(gè)category中定義的方法名一樣歌殃,那么運(yùn)行時(shí)執(zhí)行哪一個(gè)方法名的方法就不一定了。

  9. 為了防止未定義的行為蝙云,最佳實(shí)踐是給方法名添加前綴氓皱。

  10. extension和category功能類似,但是extension只可以給已知源碼的class添加方法。

  11. class extension經(jīng)常用來給public class添加private方法或者屬性波材。 例如股淡,定義一個(gè)屬性為readonly在外部,但是內(nèi)部定義該屬性為readwrite廷区,為了內(nèi)部能直接改變屬性值唯灵。

  12. 和class extension不同,associated reference 不影響原始class的定義和實(shí)現(xiàn)隙轻,所以說即便沒有對(duì)原始數(shù)據(jù)的訪問權(quán)限埠帕,也可以使用。
    objc_setAssociatedObject

  13. NSArray和NSDictionary只可以用來收集OC對(duì)象玖绿,其它對(duì)象必須封裝在OC對(duì)象之內(nèi)才可以init到上述類型之中敛瓷。

  14. NSNumber是一個(gè)類簇。意思是當(dāng)你在運(yùn)行時(shí)創(chuàng)建一個(gè)實(shí)例時(shí)斑匪,你會(huì)得到一個(gè)具體的子類來存儲(chǔ)提供的值琐驴,就當(dāng)那個(gè)對(duì)象是NSNumber的子類就好。

  15. 在sort的時(shí)候:
    a) NSArray類型由于是不可變秤标,所以調(diào)用sort方法會(huì)返回一個(gè)新的array對(duì)象绝淡。
    b) Mutable的Array可以直接sort,不需要返回新array

  16. 如果在collection中想表達(dá)”no object”苍姜,可以使用NSNull類

  17. 很多collection類實(shí)現(xiàn)了NSFastEnumeration協(xié)議牢酵,包括NSArray,NSSet和NSDictionary衙猪。

  18. 在快速遍歷collection時(shí)是不可以修改值的馍乙,即便是mutable的變量。如果你打算add或者remove一個(gè)對(duì)象垫释,會(huì)導(dǎo)致一個(gè)運(yùn)行時(shí)異常丝格。

  19. 通過反復(fù)調(diào)用nextObject也可以遍歷所有內(nèi)容,比如:
    while((eachObject = [enumerator nextObject])){……}

  20. 如果真的想在條件處賦值棵譬,則需要將賦值語句加括號(hào)显蝌,比如:
    if((someVar = YES))

  21. 用快速遍歷比手工用遍歷對(duì)象要快。

  22. 如果在block之后修改了block內(nèi)部讀取的值订咸,因?yàn)樵撝当籧apture了曼尊,所以在block生效時(shí)不會(huì)收影響。比如:
    int value = 42;
    void (^testBlock)(void) = ^{ NSLog(“%d”,value);}//print 42 while ext
    value = 84;
    testBlock();

  23. 如果想改變block中的引用值脏嚷,需要用__block標(biāo)志骆撇。這時(shí)候該值的生命周期在block內(nèi)外都是有效的。
    __block int value = 42;
    void (^testBlock)(void) = ^{ NSLog(“%d”,value);}//print 84 while ext
    value = 84;
    testBlock();

  24. block類型應(yīng)當(dāng)設(shè)置其類型為copy父叙,因?yàn)閎lock需要copy以保證保持原始調(diào)用域的環(huán)境神郊。不過在ARC下不需要考慮這個(gè)問題肴裙,因?yàn)閎lock自動(dòng)會(huì)以copy形式定義。

  25. 下述方法遍歷每一個(gè)鍵值對(duì)更加方便:
    NSDictionary *dict = …
    [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj,BOOL *stop)
    {
    NSLog(“key:%@,value:%@”,key,object);
    }

  26. 創(chuàng)建NSError時(shí)涌乳,需要定義自己的errorDomain践宴,應(yīng)該形式如下:
    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];

  27. 自定義類應(yīng)當(dāng)使用三個(gè)字母的前綴。命名最好用名詞爷怀,以表示所指阻肩,例如:NSWindow, CAAnimation等

  28. 如果method需要一個(gè)或多個(gè)參數(shù),方法名需要暗示出每一個(gè)參數(shù)运授,比如:
    subStringFromIndex: writeToUrl:

  29. 方法名的第一部分應(yīng)當(dāng)暗示方法的主要意圖或者方法的返回值烤惊。如果返回值很重要,可以用復(fù)合詞吁朦,比如mutableCopy. 如果一個(gè)方法返回一個(gè)action柒室,第一個(gè)單詞應(yīng)當(dāng)暗示那個(gè)action,例如write…或者enumerate…

  30. 如果一個(gè)方法需要傳入error參數(shù)逗宜,此參數(shù)應(yīng)該排在最后雄右;如果一個(gè)方法含有block,block應(yīng)當(dāng)排在最后纺讲,為了使得方法名在調(diào)用時(shí)盡量處于統(tǒng)一行擂仍,方便可讀。因此盡量在方法中少包含block變量熬甚。

  31. 少寫縮寫逢渔。

  32. 工廠類方法在創(chuàng)建時(shí)應(yīng)當(dāng)以類名字作為開頭(無前綴),除非類的子類存在相同的工廠方法了乡括。例如 [NSMutableArray array];

  33. 只要見到mutable就是深拷貝肃廓。
    列表:

[immutableObject copy]//淺copy
[immutableObject mutableCopy]//單層深copy

[mutableObject copy]//單層深copy
[mutableObject mutableCopy]//單層深copy

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市诲泌,隨后出現(xiàn)的幾起案子盲赊,更是在濱河造成了極大的恐慌,老刑警劉巖敷扫,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哀蘑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡呻澜,警方通過查閱死者的電腦和手機(jī)递礼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門惨险,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羹幸,“玉大人,你說我怎么就攤上這事辫愉≌な埽” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長屏镊。 經(jīng)常有香客問我依疼,道長,這世上最難降的妖魔是什么而芥? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任律罢,我火速辦了婚禮,結(jié)果婚禮上棍丐,老公的妹妹穿的比我還像新娘误辑。我一直安慰自己,他們只是感情好歌逢,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布巾钉。 她就那樣靜靜地躺著,像睡著了一般秘案。 火紅的嫁衣襯著肌膚如雪砰苍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天阱高,我揣著相機(jī)與錄音赚导,去河邊找鬼。 笑死赤惊,一個(gè)胖子當(dāng)著我的面吹牛辟癌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荐捻,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼黍少,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了处面?” 一聲冷哼從身側(cè)響起厂置,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎魂角,沒想到半個(gè)月后昵济,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡野揪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年访忿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斯稳。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡海铆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挣惰,到底是詐尸還是另有隱情卧斟,我是刑警寧澤殴边,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站珍语,受9級(jí)特大地震影響锤岸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜板乙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一是偷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧募逞,春花似錦晓猛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至透乾,卻和暖如春洪燥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乳乌。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工捧韵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汉操。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓再来,卻偏偏與公主長得像,于是被迫代替她去往敵國和親磷瘤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子芒篷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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