搜尋

首頁  >  問答  >  主體

objective-c - 在Obj-C中實例方法和類別方法的差別是什麼?

實例方法,即需要實例化物件呼叫的方法。
類別方法,即類別直接呼叫的方法。

我不懂什麼場合用類別方法,什麼場合用實例方法。兩者相比較真正的優點和缺點又是什麼?

習慣沉默習慣沉默2811 天前802

全部回覆(3)我來回復

  • 迷茫

    迷茫2017-05-02 09:22:30

    類別方法一般用來提供標準化處理;實例方法一般用來提供個人化處理(綁定特定實例)。

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-02 09:22:30

    優勢和劣勢這種說法應該不存在吧。

    • 如果一個方法,輸入參數相同的情況下,輸出會收到不同物件實例的實例變數影響而不同,一般是要寫成實例方法的。

    • 如果輸入參數相同,但是不受實例變數影響(static不算實例變數),則可以寫成類別方法交給類別去呼叫。例如

    - (NSString *)getCertainString
    {
        return @"The string."
    }

    這種鬼你寫成實例方法也行,但是不只每次呼叫得實例化/釋放一個,對程式碼閱讀還有影響。

    • 類方法較常見於單例模式和工廠模式。單例模式程式中這個類別只有其一個實例;工廠模式則是根據參數生產出不同的實例回傳。

    回覆
    0
  • 阿神

    阿神2017-05-02 09:22:30

    方法之間並沒有什麼優劣之分,只是為了使用方便.如果非要區分,下面應該算是一點

    類別方法的劣勢:在類別方法中,self 表示類別,而不是類別物件,所以在類別方法中你沒辦法用self.呼叫屬性,也沒辦法呼叫本類別的實例方法.
    類別方法的優點:呼叫簡單,不需要建立物件

    回覆
    0
  • 取消回覆