iOS 開發(fā):類方法、對象方法

Objective-C中的方法有兩種:類方法和對象方法(也叫作實例方法)。

1、對象方法(實例方法)

1.1、對象方法解釋

對象方法以 - 開頭,屬于類的某一個或某幾個實例對象。對象方法是類對象必須進(jìn)行實例化后才可以使用的方法,對象方法將消息發(fā)送給實例對象。

1.2、對象方法聲明

  • 格式


    對象方法.png
  • 特征:
  • 對象方法以-開頭如 -(void)xx;
  • 對象方法只能由對象來調(diào)用
  • 對象方法中可以訪問當(dāng)前對象的成員變量
  • 調(diào)用格式 [對象名 對象方法名];

1.3、對象方法實現(xiàn):

  • 必須寫在以@implementation開頭,@end之間
  • 在聲明的后面加上{}即表示實現(xiàn)
  • 將需要實現(xiàn)的代碼寫在{}中

2、類方法

2.1、類方法解釋

以+開頭的方法是類方法。它是屬于類本身的方法,不屬于類的某一個實例對象,不需要實例化類,用類名即可使用,通過類方法將消息發(fā)送給類

2.2、類方法聲明

  • 格式

將對象方法-號變?yōu)?號

  • 特征
  • 類方法以+開頭 如+(void)put;
  • 類方法只能由類來調(diào)用
  • 類方法中不能訪問實例(成員)變量,因為類方法由類來調(diào)用,并沒有創(chuàng)建存儲空間來存儲類中的成員變量。
  • 類方法的好處:
  • 不依賴于對象,執(zhí)行效率更高;
  • 能用類方法解決的問題,盡量使用類方法;
  • 類方法的場合:
  • 當(dāng)方法內(nèi)部不需要使用到成員變量時,可以改為類方法
  • 類方法一般用于編寫工具方法

2.3、類方法實現(xiàn)

  • 必須寫在以@implementation開頭,@end之間
  • 在聲明的后面加上{}即表示實現(xiàn)
  • 將需要實現(xiàn)的代碼寫在{}中

3.對象方法和類方法區(qū)別

3.1、對象方法

  • 對象方法是屬于對象的
  • 以減號-開頭
  • 只能讓對象調(diào)用,沒有對象,這個方法根本不可能被執(zhí)行
  • 對象方法能訪問實例變量(成員變量)
  • 對象方法中可以調(diào)用當(dāng)前對象的對象方法
  • 對象方法中可以調(diào)用其他對象的對象方法
  • 對象方法中不可以調(diào)用類方法

3.2、類方法

  • 類方法是屬于類的
  • 以加號+開頭
  • 只能用類名調(diào)用,對象不能調(diào)用
  • 類方法中不能直接訪問實例變量(成員變量)
  • 類方法中不能直接調(diào)用對象方法,要想調(diào)用對象方法,必須創(chuàng)建或傳入對象。

3.3、使用場合:

  • 當(dāng)不需要訪問成員變量的時候,盡量用類方法
  • 類方法和對象方法可以同名

4、聲明和實現(xiàn)

在OC中類的定義有兩部分:類的聲明、類的實現(xiàn)。

  • .h:
    類的聲明文件,用于聲明成員變量、方法。類的聲明使用關(guān)鍵字@interface和@end。

注意:.h中的方法只是做一個聲明,并不對方法進(jìn)行實現(xiàn)。

也就是說,只是說明一下方法名、方法的返回值類型、方法接收的參數(shù)類型而已,并不會編寫方法內(nèi)部的代碼。

  • .m:

類的實現(xiàn)文件,用于實現(xiàn).h中聲明的方法。類的實現(xiàn)使用關(guān)鍵字@implementation和@end。
方法的聲明和實現(xiàn),都必須以 + 或者 -開頭:

  • + 表示類方法(靜態(tài)方法)
  • - 表示對象方法(動態(tài)方法)

在.h中聲明的所有方法作用域都是public類型,不能更改。
成員變量的常用作用域有3種:

  • @public 全局都可以訪問
  • @protected 只能在類內(nèi)部和子類中訪問
  • @private 只能在類內(nèi)部訪問
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容