Objective-C 構造方法 分類 類的深入研究

來源:互聯網
上載者:User

標籤:

構造方法

1.對象建立的原理

new的拆分兩部曲

Person *p = [Person alloc]; 分配記憶體(+alloc)

Person *p = [p init]; 初始化(-init)

合并: Person *p = [[Person alloc] init]; 

2.init方法的重寫

- (void) init {    if(self = [super init]) {        _age = 10;//想在對象建立完畢後 成員變數馬上就有一些預設的值    }    return self;}

3.自訂構造方法

/** 自訂構造方法一 **/- (id) initWithAge : (int) age {    if(self = [super init]) {        _age = age;    }    return self;}/** 自訂構造方法二 **/- (id) initWithAge : (int) age andNo : (int) no {    if(self = [super init]) {        _age = age;        _no = no;    }    return self}/** 注意 **///傳回值是id類型//方法名都以init開頭

分類

Category

可以給一個類擴充一些方法(不修改原來的代碼)

#import "Person.h"@interface Person (Hy)- (void) show;@end/** 聲明 **///@interface 類名 (分類名稱)//@end
#import "Person+Hy.h"@implementation Person (Hy)- (void) show {    NSLog(@"哈哈哈~~!");}@end/** 實現 **///@implementation 類名 (分類名稱)//@end

使用注意:

分類只能增加方法 不能增加成員變數

分類方法實現中可以訪問原來類中聲明的成員變數

分類可以重新實現原來類中的方法 但是會覆蓋掉原來的方法 會導致原來的方法沒法再使用

方法調用的優先順序: 分類(最後參與編譯的分類優先) ---> 原來類 ---> 父類

類的深入研究

類本身也是一個對象 是Class類型的對象 簡稱類對象

Person *p = [[Person alloc] init];

Class c = [p class];

[c test];//c是可以調用 Person裡面的類方法

類的載入和初始化:

當程式啟動時 就會附加元件目中所有的類和分類 而且載入後會調用每個類和分類的+load方法 只會調用一次

當第一次使用某個類時 就會調用當前類的+initialize方法

先載入父類再載入子類(先調用父類的+load方法 再調用子類的+load方法) 先初始化父類再初始化子類(先調用父類的+initialize方法再調用子類的+initialize方法)

Objective-C 構造方法 分類 類的深入研究

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.