swift4.0 字段 含義

有你生活更精彩.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

  1. as、as!、as? 關鍵字 :http://blog.csdn.net/robinson_911/article/details/74139753
  2. 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(僅供參考學習)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容