
有你生活更精彩.jpg
| 字段 | 含義 | 例子 |
|---|---|---|
var |
定義變量,設置之后可以修改 | var number: Int = 30 |
let |
定義常量,設置之后不可以修改一般情況下先用let,可以避免數(shù)據(jù)被修改,保證數(shù)據(jù)安全性 | let number: Int = 30 |
! |
強制解析 1.確定可選包含一個非nil的值,否則會運行錯誤 聲明可選變量時使用感嘆號(!) 2. 替換問號(?)這樣可選變量在使用時就不需要再加一個感嘆號(!)來獲取值,它會自動解析。) | var myString:String? myString ="Hello, Swift!" if myString != nil { print( myString! )}else{ print("myString 值為 nil"} |
? |
可選(Optionals)類型,值會默認為 nil,在類型和 ?之間沒有空格 | var optionalInteger: Int? |
?? |
||
as |
字面理解就是有保證的轉(zhuǎn)換,從派生類轉(zhuǎn)換為基類的向上轉(zhuǎn)型 | // 將1轉(zhuǎn)成float let num = 1 as CGFloat // dog轉(zhuǎn)換到父類 animal class Animal {} class Dog: Animal {} let d = Dog() d as Animal |
as? |
Swfit代碼寫一段時間后會發(fā)現(xiàn)到處都是 ? ,這預示著如果轉(zhuǎn)換不成功的時候便會返回一個 nil 對象。成功的話返回可選類型值(optional) | // Dog、Cat和Animal的轉(zhuǎn)換關系class Animal {}class Cat: Animal {}class Dog: Animal {var name = "Spot"}let dog: Dog? = nildog?.name // 選擇調(diào)用,返回空值nildog!.name // 強行調(diào)用,報錯let animal: Animal = Cat()animal as? Dog // 貓轉(zhuǎn)狗失敗,返回nil animal as! Dog // 貓強行轉(zhuǎn)狗,失敗報錯 |
as! |
理解:字面理解就是有強項轉(zhuǎn)換,即向下轉(zhuǎn)型,子類(派生類)向父類轉(zhuǎn)換,官方解釋說這是一個不被保證的轉(zhuǎn)換,可能會因為強轉(zhuǎn)的失敗而會導致崩潰。同時 !是一個陷阱的標志,就像??一樣,用起來存在一定危險性 | // Dog到Animal的轉(zhuǎn)化 class Animal {} class Dog: Animal {} let a: Animal = Dog() a as Dog // as不能將a轉(zhuǎn)成Dog,即不能向下轉(zhuǎn)換 a as! Dog // as!能強行將a轉(zhuǎn)成Dog -> Bingo |
guard |
作為保衛(wèi)作用 | // 如果有結(jié)果,那么看一下結(jié)果是否為空,為空退出 guard let placemarks = placemarks else { return } |
open |
可以被任何人使用,包括override和繼承 | /// ModuleA:這個類在ModuleA的范圍外是不能被繼承的,只能被訪問public class NonSubclassableParentClass {} |
public |
可以被任何人訪問。但其他module中不可以被override和繼承,而在module內(nèi)可以被override和繼承 | // 在ModuleA的范圍外可以被繼承open class SubclassableParentClass {} |
final |
不允許對其修飾的內(nèi)容進行繼承或者重新操作。final關鍵字可以在class、func和var前修飾 | public final class FinalClass { } |
internal |
默認訪問級別,internal修飾符可寫可不寫,internal訪問級別所修飾的屬性或方法在源代碼所在的整個模塊都可以訪問。 | internal class InternalClass {} |
fileprivate |
訪問級別所修飾的屬性或者方法在當前的Swift源文件里可以訪問 | fileprivate var name = "wangsan" |
private |
訪問級別所修飾的屬性或者方法只能在當前類里訪問 | private var name = "wangsan" |
override |
重載 | // 重寫方法 override func a() { } |
extension |
擴展 | http://www.itdecent.cn/p/edf4cad8dfd5 |
lazy |
懶加載,需要初始化一次 | lazy var first = NSArray(objects: "1","2" |
typealias |
已存在的類型重新定義名稱 | typealias Location = CGPoint let point: Location = CGPoint(x:1 , y: 1) |
5種修飾符訪問權限排序 :open > public > interal > fileprivate > private
不足的地方后續(xù)會繼續(xù)添加
參考的資源:
1.Swift開發(fā)語法 : http://www.itdecent.cn/p/5e2d4c34f18e
- as、as!、as? 關鍵字 :http://blog.csdn.net/robinson_911/article/details/74139753
- open,public,internal,fileprivate private:
http://blog.csdn.net/sun_cui_hua/article/details/78021804 、http://www.itdecent.cn/p/604305a61e57
4.extension : http://www.itdecent.cn/p/edf4cad8dfd5
一個適合初學者swift的Demo:https://github.com/hrscy/DanTang(僅供參考學習)
下面是使用swift4.0 編寫的Demo:https://github.com/guofeifeifei/swift-DanTang(僅供參考學習)