Objective-C基礎學習之Self關鍵字

  • OC提??供了兩個保留字self和super
  • OC語言中的self,就相當于C++、Java中的this指針。
  • 要理解什么是self,什么是成員變量,什么是對象方法,什么是類方法
  • 成員變量:成員變量是一個實例對象的具體狀態特征,并且這些狀態特征是可以改變的,如張三的年齡,身高,體重等
  • 對象方法:一個實例對象的行為,比如張三具有吃的行為,張三做出這樣行為的時候,有可能會影響,自身的某些狀態特征,比如張三吃可能會增加張三體重和身高。
  • 類方法:類方法是某個類的行為,可以直接通過類名調用;如果在類方法中需要使用某些數據,必須通過參數傳入;它不能訪問成員變量。

1.類方法中的self

  • 在整個程序運行過程中,一個類有且僅有一個類對象。
  • 通過類名調用方法就是給這個類對象發送消息。
  • 類方法的self就是這個類對象
  • 在類方法中可以通過self來調用其他的類方法
  • 不能在類方法中去調用對象方法或成員變量,因為對象方法與成員變量都是屬于具體的實例對象的。

2.對象方法中的self

  • 在整個程序運行過程中,對象可以有0個或多個
  • 通過對象調用方法就是給這個對象發送消息
  • 對象方法中self就是調用這個方法的當前對象。
  • 在對象方法中,可以通過self來調用本對象上的其他方法
  • 在對象方法中,可以通過self來訪問成員變量

3.全局變量成員變量局部變量

  • 全局變量:只要是有聲明它的地方都能使用
  • 成員變量:只能在本類和其子類的對象方法中使用
  • 局部變量:只能在本函數或方法中使用
  • 從作用域的范圍來看:全局變量 > 成員變量 > 局部變量
  • 當不同的作用域中出現了同名的變量,內部作用域的變量覆蓋外部作用域變量,所以同名變量的覆蓋順序為:局部變量覆蓋成員變量,成員變量覆蓋全局變量
  • 如果在對象方法中出現與成員變量同名的局部變量,如果此時想使用該成員變量可以通過self->成員變量名的方式

4.self總結

  • 誰調用self所在的方法,那么self就是誰
  • self在類方法中,就是這個類的類對象,全局只有一個,可通過self- 調用本類中的其他類方法,但是不能通過self來調用對象方法或訪問成員變量
  • self在對象方法中,就是調用這個方法的那個對象, 可以通過self調- 用本類中其他的對象方法,訪問成員變量,但不能通過self調用本類的類方法。
  • 通過self調用方法的格式:[self 方法名];
  • 通過self訪問成員變量格式:self->成員變量名

5.self使用注意

  • 同時有對象方法和類方法存在的時候,self不會調錯
  • self只能在方法中使用;不要使用self來調用函數,也不可以在函數內部使用self;
  • 使用self調用本方法,導致死循環調用。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容