一、類與結構體
在這裡,我們主要**在swift中類與結構體之間的相同與不同,以及在我們平時使用的過程中應該如何選擇使用。
(1)結構體的特性:
(2) 類特性
類是一種引用型別,他分配在堆區(不連續,第乙個成員的位址和類的首位址不一致)中,也就是說乙個類型別的變數不是直接儲存具體的例項物件,而是儲存當前具體例項的記憶體位址的引用,複製後的例項和成員屬性的值都是指向原有的位址空間。
class(類不會預設生成成員初始化器)我們需要知道在宣告類的屬性時 ,我們如果既沒有初始化方法又沒有給類的屬性定義初始值時,編譯器會報錯。我們需要在定義類時給定init方法或者為類的儲存屬性定義初始值。初始化器在初始化前不可以呼叫任何例項方法、不能讀取任何屬性的值、不能引用self作為值student1
//class 'student1' has no initializers
class那麼在繼承時,初始化器又是如何的呢?student1
//便捷初始化器
convenience init()
//可失敗的初始化器
init?(age:int,name:string)
self.age =age
self.name =name
}//必要初始化器
required init(age:int,name:string)
}
class(3)類和結構體的不同student:person
}
從最直觀的角度來講,類和結構體最顯著的區別在於類是引用型別,而結構體是值類。
相同點不同點
二、類的生命週期
三、補充知識
四、sil檔案
這部分內容我也是第一次了解,下面以swift的物件記憶體分配為例:
我們在專案的targtets-xxscript-build phases的shell指令碼中輸出 swiftc -emit-sil $/llswifttest/main.swift > ./main.sil & open main.sil 即可生成並開啟sil檔案
五、lldb除錯檢視swift物件記憶體分配過程
在專案的debug-debug workflow-always show中會看到我們在生成乙個類例項時呼叫的函式
通過對這行打斷點按住control可繼續向下進入這個函式呼叫內部
由此我們推斷出:__allocating_init -----> swift_allocobject -----> swift_allocobject -----> swift_slowalloc -----> malloc(swfit物件記憶體分配過程)
Swift教程 類與結構體
swift 中類於結構體 swift中結構體與類既相似,又有不同。相似點 可以儲存變數 儲存函式 不同點 結構體不支援繼承,類支援 結構體是引用型別,類引用型別 定義 結構體定義 struct somestructure 類定義 class someclass2.例項化變數 let somereso...
Swift 類與結構體(2)
swift 類與結構體 2 在這裡,我們從函式的角度來出發看類與結構體 一 函式相關的修飾符 1.mutating修飾符 前提 在swift中class 和struct中都可以定義方法,但是在預設情況下值型別的屬性是無法被自身的例項方法修改的 struct student mutating func...
swift與結構體
struct resolution 所有結構體都有乙個自動生成的成員逐一構造器,用於初始化新結構體例項中成員的屬性 let vga resolution width 640,height 480 let someresolution resolution println vga.width prin...