對比
相同點:
定義屬性用來存儲值惹谐;
定義方法用于提供功能澈魄;
定義下標腳本用來允許使用下標語法訪問值厢蒜;
定義初始化器用于初始化實例轻纪;
可以被擴展來實現默認所沒有的功能;
遵循協議來針對特定類型提供標準功能催植。
不同點:
繼承可以繼承而結構體不可以;
類型轉換允許你在運行檢查和解釋一個類實例的類型肮蛹;
反初始化器允許一個類實例釋放任何其所被分配的資源勺择;
引用計數允許多個變量對同一個類實例進行引用。
結構體可以自動獲得一個成員初始化器,而類不會有
struct Resolution {
var width = 0
var height = 0
}
let vga = Resolution(width: 640, height: 480)
類
1伦忠、使用 ===
和 !===
來判斷兩個對象是否引用同一個類對象
let tenEighty = VideoMode()
tenEighty.resolution = hd
tenEighty.interlaced = true
tenEighty.name = "1080i"
tenEighty.frameRate = 25.0
let alsoTenEighty = tenEighty
alsoTenEighty.frameRate = 30.0
if tenEighty === alsoTenEighty {
print("tenEighty and alsoTenEighty refer to the same VideoMode instance.")
}
// prints "tenEighty and alsoTenEighty refer to the same VideoMode instance."
2省核、Swift 的 String , Array 和 Dictionary類型是作為結構體來實現的,字符串昆码,數組和字典在它們被賦值到一個新的常量或者變量气忠,或者它們被傳遞到一個函數或方法中的時候,其實是傳遞了拷貝赋咽。
而 NSString, NSArray和 NSDictionary 實例總是作為一個已存在實例的引用而不是拷貝來賦值和傳遞