類和結構體: 定義語法: class SomeClass{ //定義類的成員 var name:String = "" var age:Int = 18 var job:String?//可選可以為空 } struct SomeStruct{ //定義結構體的成員 let sex:String =
類和結構體:
定義語法:
class SomeClass{ //定義類的成員 var name:String = "" var age:Int = 18 var job:String?//可選可以為空
} struct SomeStruct{ //定義結構體的成員 let sex:String = "男" } //通常一個類的實例被稱為對象 //實例化類和結構體 let someclass = SomeClass() let somestruct = SomeStruct()
在Swift語言中,類和結構體有很多相同之處。它們都可以:
● 定義屬性來存儲值
● 定義方法來提供功能
● 定義初始化器來設置它們的初始化狀態
● 可以被擴展,擁有預設實現之外的功能
● 遵從協議來提供一種特定的標準功能
當然也有區別,結構體沒有類的繼承父類或其他類特性的能力,結構體是值類型,類是引用類型。
類是引用類型
與值類型不同,引用類型在被賦予到一個變數、常量或者被傳遞到一個函數時,其值不會被拷貝。因此,引用的是已存在的實例本身而不是其拷貝。
結構體和枚舉是值類型
值類型被賦予給一個變數、常量或者傳遞給一個函數的時候,他的值或被拷貝。(Swift 中,所有的基本類型:整數(Integer)、浮點數(floating-point)、布爾值(Boolean)、字元串(string)、數組(array)和字典(dictionary),都是值類型,並且在底層都是以結構體的形式所實現。)
構造器使用init關鍵字來申明一個構造器,它可以有參數但是構造器沒有返回值。
struct Fathernherit { var temp:Double init(){ temp = 32.0 } } var f = Fathernherit() print("The temp is \(f.temp) Fathernherit ") //輸出:The temp is 32.0 Fathernherit
類和結構體的選擇
但是,結構體實例始終是傳值,類實例始終是傳遞引用,也就是說他們適用於不同類型的任務。我們根據項目的需要考慮數據的結構和功能,決定每個數據類型應該被定義為類還是結構體。
通常的一個規則是符合以下一個或多個條件時考慮使用結構體去定義:
● 這個結構的主要目的是封裝少量相對簡單的數據的值。
● 結構的實例賦值或傳值的時候,封裝的值被拷貝而不是引用。
● 任何一個屬性被結構體存儲時是他們自身值類型,是拷貝而不是引用。
● 結構不需要繼承其他類型的屬性或行為。
適合使用結構體的例子:
● 描述一個幾何形狀的尺寸,封裝了均為Double類型的寬和高兩個屬性。
● 描述一個範圍,封裝了一個Int類型的開始屬性和一個Int類型的長度屬性。
● 用來描述一個三維坐標系統中的一點,封裝了Double類型的x、y和z三個屬性。
所有其他情況使用類定義並創建類的實例通過引用方式管理和傳遞。事實上,大多數的數據結構應該用使用類而不是結構體。
從一個界面跳轉到另一個界面push有兩種方法
1.程式代碼實現
let scondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("scondViewController") as! ComicLsitViewController scondViewController.artistName = label.text! self.navigationController?.pushViewController(scondViewController,animated:true)
2.storyboard實現
首先點擊viewcontroller->Editor->Embed in -> Navigation Controller 下一步就是關聯界面如下圖。