【Objective-C】08-self關鍵字

來源:互聯網
上載者:User

說明:這個Objective-C專題,是學習iOS開發的前奏,也為了讓有物件導向語言開發經驗的程式員,能夠快速上手Objective-C。如果你還沒有編程經驗,或者對Objective-C、iOS開發不感興趣,請忽略。學習本專題之前,建議先學習C語言專題。

OC中有一個self關鍵字,用法跟Java中的this類似,都是代表著當前方法的調用者。但self和this還是有區別的。

一、Java中的this只能用在動態方法中,不能用在靜態方法中1.在動態方法中使用this關鍵字
1 public class Student {2     private int age;3     public void setAge(int age) {4         this.age = age;5     }6 }

在第4行使用了this,這裡的this代表著調用setAge方法的某個Student對象

 

2.如果在靜態方法中使用this關鍵字,直接報錯

 

二、OC中的self既可以用在動態方法中,也可以用在靜態方法中1.self在動態方法中
 1 @implementation Student 2  3 - (void)test2 { 4  5 } 6  7 - (void)test3 { 8     [self test2]; 9 }10 11 @end

* 在第3行、第8行定義了2個動態方法

* 在第8行使用了self關鍵字,這裡的self代表著調用test3方法的某個Student對象

* 第8行代碼的作用是調用Student對象的動態方法test2

 

2.self在靜態方法中
 1 @implementation Student 2  3 + (void)test2 { 4  5 } 6  7 + (void)test3 { 8     [Student test2]; 9     10     [self test2];11 }12 13 @end

* 在第3、第7行定義了2個靜態方法,看清楚方法前面的+號

* 再看第10行,這裡用到了self。看清楚了,是在靜態方法test3中用到了self關鍵字

* 一開始就說了,self代表著當前方法的調用者。當前方法是test3,那test3的調用者是誰呢?肯定是Student這個類,因為test3是個靜態方法。因此這裡的self代表著Student這個類

* 因此,第8行、第10行的作用是一樣,都是調用了靜態方法test2

 

3.self總結

1> 在動態方法中,self代表著"對象"

2> 在靜態方法中,self代表著"類"

3> 萬變不離其宗,記住一句話就行了:self代表著當前方法的調用者

相關文章

聯繫我們

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