類與結構體的區別:
1)結構體自帶乙個初始化所有屬性的初始化方法,而類帶有乙個不含任何引數的建構函式
2)結構體是值型別,每次拷貝乙份新的內容,修改原來的,不會影響新的
類是引用型別,賦值就像是oc中的指標指向,無論通過哪個變數名修改,都是在操作乙個物件
1.類
類的寫法
注意:宣告類方法:可以在前面新增static關鍵字,或者新增class關鍵字
二者的區別:class修飾的方法,子類繼承時可以被重寫,static 修飾的不可以
// 類的寫法
class
person
// 宣告類方法:(可以在前面新增static關鍵字,或者新增class關鍵字)
static func sayhello()
class
func
sayhello2()
// 類擁有乙個建構函式,但是不包含引數,重寫建構函式
init(name: string, age: int)
class
student: person
override
class
func
sayhello2()
}
建立物件,並且呼叫方法
//let修飾,但是可以修改內部的屬性值,只是不可以給person整體賦值,eg:不可以person = p
let person = person(name: "da hua zi", age: 12)
person.name = "大華子"
計算屬性
class
rect
set
}var centery: int
set
}// 建構函式
init(x: int, y: int, width: int, height: int)
}
計算屬性的使用
let rect = rect(x: 10, y: 20, width: 100, height: 100)
rect.centerx = 1000
print(rect.centerx) //值是60,並非後面的賦的值
2.協議注意:宣告協議方法,預設必須實現
protocol marryprotocol
//宣告可選的協議方法 @objc
@objcprotocol
marryprotocol2
定義乙個類,並且遵守協議
class latiao: marryprotocol, marryprotocol2
func test2()
//如果實現可選協議方法,在沒有父類的情況下,需要新增@objc關鍵字
//如果實現可選協議方法,有父類,直接寫就可以了
@objc func test4()
}
3.extensionswift中沒有類目,但是extension的作用類似類目
注意:既可以給結構體擴充套件方法,也可以給類擴充套件方法
//給類擴充套件方法
extension person
}//給結構體擴充套件方法
extension int
return i
}}let res = 2.test(4)
4.閉包閉包類似 block
宣告閉包變數
var
sumclosure: ((a: int, b: int) -> int)? //可選
varsumclosure2: ((int, int) -> int)? //可以省略引數名
給閉包賦值
sumclosure2 =
sumclosure2 =
sumclosure2 =
sumclosure2 =
sumclosure2 =
sumclosure2 =
呼叫
let resu = sumclosure2!(23, 54)
給閉包起別名
typealias closure = (int, int) -> int
Swift入門 02邏輯分支
var i 10 if i 0 var a 10 var b 50 var result a b a b print result let url nsurl string if url nil resume swift convenience init?string urlstring strin...
swift小結02 基礎篇
閉包 類似於 oc 中的 block,是一段預先定義好的 在需要時執行 閉包表示式格式 in用於區分閉包定義和 實現 定義有引數a的閉包 let coluse 定義無引數的閉包 let coluse1 let coluse2 尾隨閉包 當閉包是最後乙個引數的時候,將閉包放在引數整個 外面 uivie...
Swift 02 常量和變數
playground noun a place where people can play import uikit var str hello,playground 常量的定義用let let maxlogincount 10 變數的定義用var var currentlogincount 0 c...