《Objective-C基礎教程》再讀筆記

第一次讀這本書是在剛剛接觸iOS開發(fā)的時候诅愚,那時的我沒有一點開發(fā)經驗李破,書中的很多內容都只是一知半解,甚至有所忽略垫蛆。半年多的時間過去了禽最,有些許開發(fā)經驗的我再來讀這本書,又有了很多收獲袱饭,因此便有了這篇“再讀”筆記川无。

第六章源文件組織

  • 一個文件在接口部分存放的代碼包括
    1. 類的@interface指令:聲明繼承關系
    2. 公共struct定義
    3. enum常量
    4. define定義
    5. extern全局變量

第八章Foundation Kit介紹

  • NSArray只能存儲OC對象,不能存儲
    1. C語言的基礎數據類型虑乖,如int懦趋,float,enum疹味,struct
    2. OC的基礎數據類型仅叫,如NSInteger,NSUInteger糙捺,CGFloat
    3. nil
  • 可以通過NSNumber類將OC的基礎數據類型轉化為對象存儲在NSArray中诫咱,簡易的寫法為@()。
  • NSArray可以通過字面量語法創(chuàng)建洪灯,并且在結尾處不用補上nil坎缭。但是作為NSArray子類的NSMutableArray卻沒有字面量語法來創(chuàng)建起對象。
  • 判斷數組內是否包含某一對象有兩種常用方法:
    1. - (BOOL)containsObject:(ObjectType)anObject ;
    2. - (NSUInteger)indexOfObject:(ObjectType)anObject ; //若返回值為NSNotFound签钩,則說明不包含該對象
      上述兩個方法都是建立在對象的-(BOOL)isEqual:方法之上的掏呼。
  • 當要讀取的key值在NSDictionary對象中不存在時會返回nil。

第十章對象初始化

  • BOOL類型變量初始化為NO铅檩;int類型變量初始化為0哄尔;float類型變量初始化為0.0;指針對象初始化為nil柠并。
  • 如果創(chuàng)建了一個指定初始化函數岭接,則一定要在該初始化函數中調用超類的指定初始化函數富拗。
  • 如果初始化函數不止一個,則需要選擇一個作為指定初始化函數鸣戴。被選定的方法應該調用超類的指定初始化函數啃沪,其它初始化函數按照該指定初始化函數的形式來實現(xiàn)。

第十一章屬性

  • 屬性的默認特性為(atomic, assign, readwrite)窄锅。
  • 當屬性為只讀時创千,編譯器只會自動生成getter方法,而不會自動生成setter方法入偷。此時如果不定義setter方法追驴,就無法通過點語法進行賦值,可以通過以下代碼解決該問題疏之。
#import <Foundation/Foundation.h>
@interface BaseClass : NSObject 
@property (nonatomic, copy,readonly) NSString *name ;
- (void)setName:(NSString *)name ;
@end

#import "BaseClass.h"
@implementation BaseClass
@synthesize name=_name ;
- (void)setName:(NSString *)name {
    if (_name != name) {
        [_name release] ;
        _name = [name copy] ;
    }
}
@end
  • 如果同時重寫了屬性的setter方法和getter方法殿雪,那么編譯器將不會將屬性的名稱與支持屬性的實例變量名相關聯(lián),此時需添加代碼@synthesize name=_name ;锋爪。

第十二章類別

  • 類別的局限性
    1. 無法向類中添加新的實例變量
    2. 當方法名稱發(fā)生沖突時丙曙,類別具有更高的優(yōu)先級
  • 類別的優(yōu)勢
    1. 將類的實現(xiàn)代碼分散到多個不同文件或框架中
    2. 創(chuàng)建對私有方法的前向引用:只要知道對象支持的某個方法的名稱,即使該對象所在類的接口中并沒有聲明該方法也可以調用其骄。不過這么做編譯器會報錯亏镰,但是可以通過新建一個該類的類別并且在該類別的.h文件中聲明原始類的該私有方法來解決該問題
    3. 創(chuàng)建一個NSObject的類別來向對象添加非正式協(xié)議
  • 類擴展
    1. 不需要名字
    2. 在包含源代碼的類中使用它
    3. 添加實例變量
    4. 可以將只讀權限改為可讀寫權限
    5. 創(chuàng)建數量不限

第十四章代碼塊和并發(fā)性

  • 使用block進行回調時要注意循環(huán)引用問題:如果A創(chuàng)建并引用了B,B引用了callBackBlock拯爽,而callBackBlock中又引用了A索抓,就會形成循環(huán)引用。解決方法是使用弱引用來解除這個循環(huán):__weak A *weakSelf = self

  • 連續(xù)隊列

    1. 當一連串的任務需要按照一定的順序執(zhí)行時可以使用連續(xù)隊列
    2. 任務執(zhí)行順序為先入先出
    3. 可創(chuàng)建任意數量的連續(xù)隊列毯炮,它們并行操作任務
    4. 串行執(zhí)行后臺任務纸兔,主要用于處理耗時比較長的方法,譬如下載否副,安裝汉矿,刪除等
    5. 代碼示例
      dispatch_queue_t serialQueue = dispatch_queue_create("com.apress.mySerialQueue", nil) ;
  • 并發(fā)隊列

    1. 適用于那些可以并行運行的任務
    2. 遵從先入先出的規(guī)范,且任務可以在前一個任務結束前就開始執(zhí)行
    3. 系統(tǒng)提供了四種全局隊列备禀,這些隊列僅僅通過優(yōu)先級加以區(qū)別洲拇。因為存在隊列的優(yōu)先級,所以那些在高優(yōu)先級隊列中的任務會比在默認或低優(yōu)先級隊列中的任務先執(zhí)行曲尸,而默認級別隊列的優(yōu)先級又高于低優(yōu)先級隊列赋续。被設置成后臺級別的隊列,它會等待所有比它級別高的隊列中的任務執(zhí)行完或CPU空閑的時候才會執(zhí)行自己的任務
    4. 后臺執(zhí)行非UI操作
    5. 代碼示例
      dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) ;
      dispatch_queue_t concurrentQueue = dispatch_queue_create(“com.appress.myConcurrentQueue”,DISPATCH_QUEUE_CONCURRENT) ;
  • 主隊列

    1. 執(zhí)行的是應用程序的主線程任務
    2. 使用dispatch_get_main_queue()可以訪問與應用程序主線程相關的連續(xù)隊列
    3. 在一個并發(fā)隊列上完成任務后更新UI的一般選擇另患,譬如頁面push纽乱,pull
  • 添加任務

    1. 同步:同步添加任務到隊列后,被添加的任務會阻塞當前線程昆箕,直到這些任務執(zhí)行完
    2. 異步:異步添加任務到隊列中后會立即返回鸦列,不必等待任務完成租冠。任務會在之后由GCD決定執(zhí)行
    3. 通過代碼塊添加任務:異步添加dispatch_async,同步添加dispatch_sync

第十七章文件加載與保存

  • 采用NSCoding協(xié)議的對象通過實現(xiàn)-encodeWithCoder:-initWithCoder:這兩個方法來實現(xiàn)序列化與反序列化薯嗤,完成與NSData之間的轉換顽爹。
  • -initWithCoder:和其他init方法一樣,在為對象執(zhí)行操作之前骆姐,需要使用超類進行初始化镜粤。可以采用兩種方式玻褪,具體取決于父類肉渴。如果父類采用了NSCoding協(xié)議,則應該調用[super initWithCoder:decoder]带射,否則只需要調用[super init]同规。

第十八章鍵/值編碼

  • 可以通過-valueForKey:-setValue:forKey:兩個方法設置和訪問對象的屬性。
  • -valueForKey方法會首先查找以參數命名(格式為-key或-isKey)的getter方法庸诱,如果沒有這樣的getter方法將會在對象內尋找名稱格式為_key或key的實例變量。
  • -setValueForKey方法會自動將標量值從相應的對象中取出:
    [car setValue:[NSNumber numberWithFloat:2000.0] forKey:@“weight”] ; //屬性weight類型為float
  • -valueForKey方法會自動將標量值(int晤揣、float和struct)放入NSNumberNSValue中:
    [car valueForKey:@“modelYear”] ;//屬性modelYEar類型為int
  • 批處理
    1. - (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys ;
    2. - (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues ;
  • <null>是一種[NSNull null]對象桥爽,而(null)是一個真正的nil值。

第二十章NSPredicate

  • 創(chuàng)建謂詞:
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@“SELF….”, string] ;
  • 計算謂詞:
    BOOL match = [predicate evaluateWithObject:object] ;
  • 過濾數組內容:
    - (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate ;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末昧识,一起剝皮案震驚了整個濱河市钠四,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跪楞,老刑警劉巖缀去,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異甸祭,居然都是意外死亡缕碎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門池户,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咏雌,“玉大人,你說我怎么就攤上這事校焦∩薅叮” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵寨典,是天一觀的道長氛雪。 經常有香客問我,道長耸成,這世上最難降的妖魔是什么报亩? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任浴鸿,我火速辦了婚禮,結果婚禮上捆昏,老公的妹妹穿的比我還像新娘赚楚。我一直安慰自己,他們只是感情好骗卜,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布宠页。 她就那樣靜靜地躺著,像睡著了一般寇仓。 火紅的嫁衣襯著肌膚如雪举户。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天遍烦,我揣著相機與錄音俭嘁,去河邊找鬼。 笑死服猪,一個胖子當著我的面吹牛供填,可吹牛的內容都是我干的。 我是一名探鬼主播罢猪,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼近她,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膳帕?” 一聲冷哼從身側響起粘捎,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎危彩,沒想到半個月后攒磨,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡汤徽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年娩缰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谒府。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡漆羔,死狀恐怖,靈堂內的尸體忽然破棺而出狱掂,到底是詐尸還是另有隱情演痒,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布趋惨,位于F島的核電站鸟顺,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜讯嫂,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一蹦锋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧欧芽,春花似錦莉掂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至曲楚,卻和暖如春厘唾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背龙誊。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工抚垃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人趟大。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓鹤树,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逊朽。 傳聞我的和親對象是個殘疾皇子罕伯,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內容