【Objective-C】08-self關鍵字


說明:這個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代表着當前方法的調用者


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM