Objective-C學習筆記(二十二)——初始化方法init的重寫與自訂

來源:互聯網
上載者:User

標籤:objective-c   init方法   初始化   自訂   

      初學OC,對init這個方法不是很瞭解。我們現在來分別對init方法進行重寫以及自訂,來加深對他的瞭解。本例子也是用Person類來進行測試。

(一)重寫init方法。

(1)在Person.h中聲明init方法:

-(instancetype)init;

(2)在Person.m中聲明成員變數,以及寫一個列印成員變數的函數,並且重寫init初始化方法:在重寫的方法中,對成員變數進行了賦值。注意,這個init方法是無參數的方法。

{    NSString *_peopleName;    int _peopleAge;}-(void)show{    NSLog(@"_peopleName = %@",_peopleName);    NSLog(@"_peopleAge = %d",_peopleAge);}//重寫初始化方法;- (instancetype)init{    self = [super init];    if (self) {        [email protected]"Bob";        _peopleAge=24;    }    return self;}

(3)在main.m中調用該重寫的init方法,並進行列印成員變數的值。

        People *people  = [[People alloc]init];        [people show];        

(4)輸出結果如下:


(5)結果分析,輸出結果成功列印出我們在init方法定義時候對成員變數的賦值。符合預期。我們成功實現了對init方法的重寫。


(二)自訂init方法。

(1)在重寫的init方法中,我們發現一個問題,我們無法在main.m中實現對init的操作,也無法通過參數傳值的方式實現對成員變數的賦值。最致命的問題是無法在執行個體化一個對象的時候對他擁有的成員變數賦值。所以我們最好自訂init方法。

      首先在Person.h中聲明自訂init方法,參數包括peopleName,peopleName.

-(instancetype)initPeople: (NSString *) peopleName andAge: (int)peopleAge;

(2)在Person.m中實現init方法。使用傳入的參數值對成員變數進行賦值:

-(instancetype)initPeople:(NSString *)peopleName andAge:(int)peopleAge{    self = [super init];    if (self) {        _peopleName = peopleName;        _peopleAge = peopleAge;    }    return self;}

(3)在main.m中執行個體化對象,在執行個體化對象的同時進行成員變數的賦值,然後列印資訊:

People *people2 = [[People alloc]initPeople:@"Jack" andAge:26];

[people2 show];

(4)輸出結果:


(5)結果分析,我們成功在執行個體化對象的時候並對其賦值,這個就是初始化方法的作用。比最初的重寫init方法更為靈活。這就和C++中的構造方法起到類似的作用。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Objective-C學習筆記(二十二)——初始化方法init的重寫與自訂

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.