2016-09-16 86 views
-1

我有模型,並在此模型中包含一個函數SUM 1 + 1 爲什麼我必須使此功能非靜態?Swift中靜態函數和非靜態之間有什麼區別?

區別是唯一可實例化的類嗎?

調用靜態函數在控制器

Model.sumFunction() 

調用非靜態函數在控制器

let model = Model() 
model.sumFunction 

什麼是真正的區別?

+4

http://stackoverflow.com/questions/29636633/static-vs-class-functions-variables-in-swift-classes – boidkan

回答

1

區別在於,您的型號類的​​可以覆蓋non static函數,無論是class還是instance。但​​無法覆蓋static函數。

而這背後的原因是static得到一次內存分配,並保留在內存中,直到類仍在內存中!

+0

什麼是使用每種類型函數的好習慣? –

+0

取決於需要。通常我們不使用靜態函數。如果我們需要不需要分配內存的東西,那麼無論什麼原因,我們都應該使用靜態。例如,我們通常在'cellforrowatindexpath'方法中聲明'靜態標識符',因爲becoz標識符總是相同的,並且這個方法調用太多時間,所以使它靜態更好! – Lion

+0

謝謝!但是如果我在靜態課堂上做所有事情,未來會有什麼問題? –

相關問題