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