IOS中结构体(struct)
IOS中之struct(結構體)
- 前言
- struct的基本語法
- struct 和class的區別
- class和struct比較,優缺點?
- struct的優勢
- 使用Struct和Protocol來實現model的繼承和共享
前言
-  引用類型: 賦值時,系統不會對其對象拷貝,而是把指向該對象的指針(對象的地址值)賦值給另外一個對象,當修改某個對象的值,會隨之影響另外一個對象的值 
-  值類型: 賦值時,系統會對此對象進行拷貝,賦值出一份副本給另外一個對象,當修改一個對象的值時不影響另外一個對象 
在Swift中struct是屬于值類型,相對于其他語言來說,Swift的結構體功能更加強大,它除了支持在結構體聲明中基礎變量之外,它還支持在結構體中聲明方法,這相對于其他語言來說,是swift的一個特性之一。
swift在本質上來說是面向協議(Protocol Oriented)的語言,struct沒有也不需要繼承的功能,為了實現某個功能,struct去服從并實現某個協議就即可,從一個較高的層次來看,struct+protocol是構成swift面向協議語言的兩個基石
- 為什么需要使用結構體 - struct可保證代碼更加安全可靠,以及struct+protocol更加切合swift面向協議編程的初衷。
- struct 更快,簡單,安全,適合數據處理操作使用,在iOS開發中適合http請求的數據操作中使用。對于數據的處理解析和其他操作更快,更省內存。
 
struct的基本語法
- 結構中聲明變量,可以不用初始化值,但是calss中需要初始化值的
- Struct 會自動生成一個初始化成員變量的構造器方法,創建結構體的時候調用構造器方法賦值,但是class需要自己生成
- 如果你重寫了init()方法,系統不會幫你生成初始化構造器方法了。
- struct中聲明方法,如果方法內部修改了 struct中聲明property(屬性)值,方法前面必須加上 mutating關鍵字,如果沒有涉及到修改屬性值的話,就不需要mutating修飾,正常聲明實現方法即可
struct調用方法和類一樣,對象.方法名()
- 如果struct中聲明屬性時,有一些屬性有初始化值,有一些沒有,那么系統會自動生成兩種成員變量構造器方法,一種是包括所有的成員變量,一種是只含有沒有初始化值的成員變量構造器方法
struct對于let聲明的實例不能對變量進行賦值,class預設值是可以賦值let實例的。注意Swift中常用的String、Array、 Dictionary都是struct。
struct 和class的區別
主要區別:
-  struct是值引用,而class是類型引用(各有好處值類型不用擔心內存問題,但無法跨view完成同一個對象調用,只能是copy一份新對象使用。class 的內存問題是需要程序要注意的,但是指針引用的強大毋庸置疑的。值類型是在棧空間上操作的,引用類型是在堆控件操作的) 
-  struct沒有繼承的功能,class有繼承功能(struct不能像class 一樣繼承完成重用和多態。但是struct 可以通過組合和接口實現完成重用和多態。從這一點來說struct是比class有優勢的) 
-  定義結構體struct類型時其成員變量可以沒有初始值(編譯器會自動生成一個成員構造器,給變量賦一個默認值),如果使用這種格式定義一個類,編譯器會報錯,他會提醒你這個類沒有被初始化 
class和struct比較,優缺點?
class有一下功能,struct是沒有的:
- 1.class可以繼承,子類可以使用父類的特性和方法。但是struct是不能被繼承的
- 2.類型轉換可以在運行時檢查和解釋一個實例對象
- 3.class可用 deinit來釋放資源
- 4.一個類可以被多次引用
struct的優勢
- 結構較小,適用于賦值操作,相比較一個class, 實例被多次引用(容易發生內存泄漏),struct更安全
- 無需擔心內存泄漏問題(struct的操作都是在棧控件上,class在堆控件上)
使用Struct和Protocol來實現model的繼承和共享
- 在項目中如何選擇Struct和Class - 默認使用Struct
- 當你需要繼承Objective-C某些類的的時候使用class
- 當你需要控制唯一性時使用class
- 我們使用struct和protocol來實現model繼承和共享行為
 
總結
以上是生活随笔為你收集整理的IOS中结构体(struct)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: JAVA毕业设计-智慧农业水果销售系统计
- 下一篇: Android初级教程调用手机拍照与摄像
