Swift3 0 設計技巧 擴充套件深入

2021-09-12 09:41:53 字數 1217 閱讀 6165

本機重點**擴充套件的寫法

需求:給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.0

667.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 初始化和釋放...