Swift 類class和結(jié)構(gòu)體struct的區(qū)別

類是引用類型,結(jié)構(gòu)體是值類型。

值類型在傳遞和賦值時將進行復(fù)制,而引用類型則只會使用引用對象的一個指向。引用類型是在堆上,而值類型是在棧上進行存儲和操作。相比棧上的操作,對上的操作更加復(fù)雜耗時,所以蘋果官方推薦使用結(jié)構(gòu)體,這樣可以提高App運行的效率。

class有這幾個功能struct沒有的:

  • class可以繼承,這樣子類可以使用父類的特性和方法。
  • 類型轉(zhuǎn)換可以在runtime的時候檢查和解釋一個實例的類型。
  • 可以用deinit來釋放資源。
  • 一個類可以被多次引用。

struct也有這樣幾個優(yōu)勢:

  • 結(jié)構(gòu)較小,適用于復(fù)制操作,相比于一個class的實例被多次引用更加安全。
  • 無序擔(dān)心內(nèi)存泄漏或者多線程沖突問題。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容