本機重點**擴充套件的寫法
需求:給uiview 擴充套件乙個獲取width 和height 的 屬性
extension uiview
var height:cgfloat
}
呼叫方式
self.view.width
self.view.height
分析:
呼叫方式非常簡單,但是但是,如果別人也寫了個一樣的擴充套件,或者系統框架以後也增加了乙個這樣的屬性,你寫的這個就會報衝突的錯誤有人說好辦,加個字首,我們繼續改進一下
extension uiview
var os_height:cgfloat
}
呼叫:
self.view.os_width
self.view.os_height
這個是oc 延展過來的寫法,當然swift 有自己更優雅的寫法,過程有點複雜,我按照步驟寫
struct auto
}
protocol compatible
}
compatabletype 自定義變數 具體在實現時寫os 這個一般寫自己的名字或者組織的名字
extension compatible
}
auto 是乙個泛型的結構體,self 代表誰實現了協議compatible 這個self 就是誰
extension auto where base: uiview
var height:cgfloat
}
注意:
extension uiview:compatible
完成上面的五步,就完成了我們的擴充套件,看一下如何呼叫
print(self.view.os.width)
print(self.view.os.height)
執行結果:
375.0667.0
Swift3 0 建構函式
viewcontroller.swift import uikit 在swift中,同乙個專案中 同乙個命名空間 所有的類預設都是共享的,不需要引用,可以直接訪問,不需要import 所有物件的屬性 var,也可以直接訪問到 class viewcontroller uiviewcontroller...
Swift3 0 異常錯誤
swift3.0 真的很簡單 swift3.0 資料型別 swift3.0 array swift3.0 字典 swift3.0 可選值 swift3.0 集合 swift3.0 流控制 swift3.0 物件和類 swift3.0 屬性 swift3.0 函式和閉包 swift3.0 初始化和釋放...
Swift3 0 空間命名
swift3.0 真的很簡單 swift3.0 資料型別 swift3.0 array swift3.0 字典 swift3.0 可選值 swift3.0 集合 swift3.0 流控制 swift3.0 物件和類 swift3.0 屬性 swift3.0 函式和閉包 swift3.0 初始化和釋放...