Object-C 學習筆記

  1. 類的申明放在 .h 文件中,類的實現放在 .m 文件中

  2. 類分為可變類、不可變類
    2.1. 必須在不可變對象創建時,設置不可變對象的內容。不可變對象在創建后,對象的值不能被其它對象改變
    2.2. 可變對象的值,在對象創建之后,在運行時,可變對象的值可以被其它對象改變

  3. 繼承是鏈式的,如果在類參考文檔中,在某個類及它的父類中找不到某個方法,請根據繼承鏈路逐一查找

  4. 類申明的關鍵字:interface

  5. 申明類的語法:

    @interface SimpleClass : NSObject 
     
    @end 
    
  6. 屬性性質的申明在property關鍵字之后,在一對圓括號之間被指定,用于標識屬性是否只讀

  7. 方法申明:

    - (void)someMethodWithFirstValue:(SomeType)value1 secondValue:(AnotherType)value2; 
    
  8. 在應用或項目中(包括第三方類庫),類名必須唯一

  9. 類方法申明:

    + (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc;
    
  10. 對象發送消息
    10.1 [someObject doSomething];

  11. id 關鍵字表示:某種對象類型

  12. 創建對象并初始化
    12.1

    XYZPerson *object = [XYZPerson new];
    

    12.2

    XYZPerson *object = [[XYZPerson alloc] init];
    
  13. 字面值也可以創建對象

    NSString *someString = @"Hello, World!";
    NSNumber *myBOOL = @YES;
    NSNumber *myFloat = @3.14f;
    NSNumber *myInt = @42;
    NSNumber *myLong = @42L;
    
  14. 對象比較
    14.1 比較兩個指針是否指向同一對象

    if (firstPerson == secondPerson) {
        // firstPerson is the same object as secondPerson
    }
    

    14.2 判斷兩個對象是否表示同一個值

    if ([firstPerson isEqual:secondPerson]) {
        // firstPerson is identical to secondPerson
    }
    

    14.4 某些類(如:NSString,NSNumber,NSDate)可以使用方法比較大小

    if ([someDate compare:anotherDate] == NSOrderedAscending) {
        // someDate is earlier than anotherDate
    }
    
  15. nil 說明
    15.1 初始化數量值時,如果不賦初值,請把它設置為 nil,否則,變量里會有前一個堆留下的垃圾值
    15.2 對象指針不需要設置 nil,因為如果你不給它設置初始值,編譯器會幫你把它設置為 nil
    15.3 給 nil 發送消息是安全的,如果你給 nil 發送消息,實際上,什么也不會發生
    15.4 判斷對象是否為 nil 的兩種方式
    if (object == nil)
    if (!object)

  16. 訪問器(accssor)—— 編譯器自動生成
    16.1 用于訪問值的方法(getter 方法)擁有與屬性一樣的名字
    16.2 用于設置值的方法(setter 方法)用 set 開頭的單詞命名,并且,其中的屬性名首字母要大寫

  17. 屬性特征詞
    17.1 只讀

    @property (readonly) NSString *fullName;
    

    17.2 設置訪問器格式

    @property (getter=isFinished) BOOL finished;
    
  18. 用category(類目)對現有類添加方法
    18.1 定義

    #import "XYZPerson.h"
    @interface XYZPerson (XYZPersonNameDisplayAdditions)
    - (NSString *)lastNameFirstNameString;
    @end
    

    18.2 實現

    #import "XYZPerson+XYZPersonNameDisplayAdditions.h"
    @implementation XYZPerson (XYZPersonNameDisplayAdditions)
    - (NSString *)lastNameFirstNameString {
        return [NSString stringWithFormat:@"%@, %@", self.lastName, self.firstName];
    }
    @end
    

    18.3 為了避免未定義的行為(類目里的方法名與被擴展類中的已有方法名重名),最佳的做法是給類目中的方法名稱前添加一個前綴

  19. 用extension來實現類的擴展
    19.1 類擴展在編譯時,只能被添加到已有源代碼的一類中
    19.2 類擴展的方法申明在原始類的 @implementation 塊中
    19.3 語法

    @interface ClassName ()
    
    @end
    
  20. 協議(protocol)定義消息傳遞合同
    20.1 一個協議聲明的方法和屬性,獨立于任何特定的類
    20.2 接口和數據源屬性通常標記為弱(week
    20.3 使用 @optional 指令把協議的方法標識為可選。@optional 指令適用于遵循它的任何方法 ,直到協議定義的最后,或者遇到另一個指令之前,例如 @required

    @protocol XYZPieChartViewDataSource
    - (NSUInteger)numberOfSegments;
    - (CGFloat)sizeOfSegmentAtIndex:(NSUInteger)segmentIndex;
    @optional
    - (NSString *)titleForSegmentAtIndex:(NSUInteger)segmentIndex;
    - (BOOL)shouldExplodeSegmentAtIndex:(NSUInteger)segmentIndex;
    @required
    - (UIColor *)colorForSegmentAtIndex:(NSUInteger)segmentIndex;
    @end
    
  21. 使用 NSNull 代替 nil
    21.1 不能在集合中添加 nil,因為在 Object-C 中,nil 表示沒有對象,集合中需要使用 NSNull

    NSArray *array = @[ @"string", @42, [NSNull null] ];
    
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容