實例方法,即需要實例化物件呼叫的方法。 類別方法,即類別直接呼叫的方法。
我不懂什麼場合用類別方法,什麼場合用實例方法。兩者相比較真正的優點和缺點又是什麼?
類別方法一般用來提供標準化處理;實例方法一般用來提供個人化處理(綁定特定實例)。
優勢和劣勢這種說法應該不存在吧。
如果一個方法,輸入參數相同的情況下,輸出會收到不同物件實例的實例變數影響而不同,一般是要寫成實例方法的。
如果輸入參數相同,但是不受實例變數影響(static不算實例變數),則可以寫成類別方法交給類別去呼叫。例如
- (NSString *)getCertainString { return @"The string." }
這種鬼你寫成實例方法也行,但是不只每次呼叫得實例化/釋放一個,對程式碼閱讀還有影響。
類方法較常見於單例模式和工廠模式。單例模式程式中這個類別只有其一個實例;工廠模式則是根據參數生產出不同的實例回傳。
方法之間並沒有什麼優劣之分,只是為了使用方便.如果非要區分,下面應該算是一點
類別方法的劣勢:在類別方法中,self 表示類別,而不是類別物件,所以在類別方法中你沒辦法用self.呼叫屬性,也沒辦法呼叫本類別的實例方法.類別方法的優點:呼叫簡單,不需要建立物件
類別方法一般用來提供標準化處理;實例方法一般用來提供個人化處理(綁定特定實例)。
優勢和劣勢這種說法應該不存在吧。
如果一個方法,輸入參數相同的情況下,輸出會收到不同物件實例的實例變數影響而不同,一般是要寫成實例方法的。
如果輸入參數相同,但是不受實例變數影響(static不算實例變數),則可以寫成類別方法交給類別去呼叫。例如
這種鬼你寫成實例方法也行,但是不只每次呼叫得實例化/釋放一個,對程式碼閱讀還有影響。
類方法較常見於單例模式和工廠模式。單例模式程式中這個類別只有其一個實例;工廠模式則是根據參數生產出不同的實例回傳。
方法之間並沒有什麼優劣之分,只是為了使用方便.如果非要區分,下面應該算是一點
類別方法的劣勢:在類別方法中,self 表示類別,而不是類別物件,所以在類別方法中你沒辦法用self.呼叫屬性,也沒辦法呼叫本類別的實例方法.
類別方法的優點:呼叫簡單,不需要建立物件