objective-c - 在Obj-C中實例方法和類別方法的差別是什麼?
習慣沉默
習慣沉默 2017-05-02 09:20:30
0
3
727

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

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

習慣沉默
習慣沉默

全部回覆(3)
迷茫

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

曾经蜡笔没有小新

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

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

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

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

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

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

阿神

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!