Swift 類和結構體(class struct)

2021-07-31 16:41:07 字數 1131 閱讀 6194

**較傳統的oc語言,swift使用了更多的結構體;

在 swift 中,所有的基本型別:整數(integer)、浮點數(floating-point)、布林值(boolean)、字串(string)、陣列(array)和字典(dictionary),都是結構體型別;

所以只有熟悉類和結構體各自的特性,才能編寫出更優質的**。**

引用型別

引用型別在被賦予到乙個變數、常量或者被傳遞到乙個函式時,其值不會被拷貝。因此,引用的是已存在的例項本身而不是其拷貝

值型別
它們的例項,以及例項中所包含的任何值型別屬性,在**中傳遞的時候都會被複製

本質區別:

swift 中類和結構體有很多共同點

與結構體相比,類還有如下的附加功能

結構體定義語法

struct somestructure
所有結構體都有乙個自動生成的成員逐一構造器,用於初始化新結構體例項中成員的屬性

類定義語法 (一)

不繼承nsobject的類,叫做基類

class

someclass

類定義語法 (二)

這種類繼承自nsobject,可以使用oc中的 nsobject 的特性 eg:kvo,runtime

class

someclass: nsobject

類是引用型別,其屬性如果是可變型別,可以直接修改,修改後型別不變

結構體是值型別,初始化完成後,一般情況下,不允許修改其屬性;如果修改其屬性,會生成乙個新的結構體;如果想不改變結構體的型別,需要定義乙個mutating修飾的方法,專門用來修改其屬性

swift用了大量的結構體,每次修改都是複製乙份,是不是很浪費記憶體?

答:在 swift 標準庫中,像是 array,dictionary 和 set 這樣的集合型別是通過一種叫做寫時複製 (copy-on-write) 的技術實現的,該技術優化了這一問題,讓結構體在核合適的時候才進行複製。

當符合一條或多條以下條件時,請考慮構建結構體:

Swift 類和結構體

swift 中類和結構體的共同點 1.定義屬性用於儲存值 2.定義方法用於提供功能 3.定義下標用於訪問值 4.定義構造器用於生成初始化值 5.通過擴充套件以增加預設實現的功能 6.符合協議以對某類提供標準功能 class 不同於 struct 的特點 1.允許乙個類繼承另乙個類的特徵 2.型別轉換...

Swift 結構體和類

結構體 swift結構體也具有封裝的概念 swift結構體比oc c語言裡面的結構體更加進了一步,裡面可以有方法,更接近我們的類 結構體的定義格式 struct結構體名 struct rect var width double 按構造方法賦初值 var height double 方法 func g...

swift3 類class與結構體struct

swift 中類和結構體有很多共同點。共同處在於 與結構體相比,類還有如下的附加功能 定義類class class 角色 var 小黃 角色 小黃.安全區角色 id 小黃 money 999 當前角色是小黃,money有999 定義結構體struct struct 座標 var 小黃的座標 座標 小...