?swift的函數跟閉包也分為 (無參無返回值,無參有返回值,有參無返回值,有參有返回值)四種情況。可以上代碼來看一下。
func demo1 ( ) { print ("沒有參數沒有返回值") }?
func demo2 ( ) ->String { print("沒有參數有返回值")? return "xixi"}
func demo3 (str1:String,str2:String )->( ) { print("有參數沒有返回值") }
func demo4 (str1:String,str2:String)->String { print("有參數有返回值") return "\(str1)\(str2)"}
然后再 viewDidLoad中分別調用就行了
/* 閉包 */ 閉包相當于是 C里面的 block,封裝了一段有特定功能的代碼塊 。閉包的書寫格式為:????? { (輸入參數列表)->返回值類型??? in?? 閉包里面執行的代碼塊 }
/* 懶加載 */ 懶加載的書寫格式是特定的:
lazy var 變量名:變量類型 = {? let?? 定義一個同樣類型的常量并賦值???? return xx }( )
/*繼承?*/ swift里面 set方法的寫法:
var 變量名:類型? { didSet{ } }
只要是自定義的函數就必須機上 func,系統函數不用加,且字樣是紅色的??????????????????????????????? 只要是 override修飾的函數,代表這個函數繼承自父類???????????????????????????????????????????????????????????????? 必選類型屬性在重寫 init方法時,必須在 super.init( )之前進行賦值。如果重載了初始化方法,并且沒有提供系統默認的初始化方法,外界是無法訪問到系統默認的初始化方法。??????? 類方法有兩種寫法: class / static 。 前者能夠被子類重載,后者不能。因為后者修飾的是在靜態區,只有一份資源能夠使用。
/* KVC */? 在字典轉 model中,基本數據類型不能為可選類型,會導致找不到 key而無法賦值。可以通過給一個默認值的方法解決。? KVC 是通過字符串間接訪問對象屬性的一種方式
通過上圖有幾個注意點: 1. 字典的創建要明確類型? 2. 基本數據類型不為可選類型 3.繼承父類的方法
/* 單例 */ 單例的好處在于很大程度上減少了內存的使用,避免了頻繁的 allocinit? 單例在 swift中有兩種創建方法:
1.? static let shareInstance:Singleton = { let singleton = Singleton( ) ? ? return? singleton }( )? 其中Singleton是繼承自 NSObject的一個類
2. static let singleton = Singleton( )?????????????????????????????????????????????????????????????????????????????????????????????????? class func shareInstance( )->Singleton {? return singleton }
/* 協議 */?
首先創建一個類 這里叫 Women 繼承 NSObject
然后寫一個協議??? protocol womenDeleGate{? func makeMoney( ) }???????????????????????????????? protocol 標識符如果前面沒有@objc,表示協議里面的所有方法都必須實現。如果協議里面有一些是選擇實現的方法,那么在這些方法前面加上 optial,并且在 protocol前面加上@objc修飾符
?class Women:NSObject{ var delegate:womenDelegate? }? // 聲明代理
在 controller中遵守協議
在 viewdidLoad( )中
創建一個對象? let women = Women( )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 設置代理? ? ? ? ? women.delegate = self? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 控制代理執行協議? women.delegate?.makeMoney( )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在? viewdidLoad外實現協議方法? ? func? makeMoney( ) { print ("實現了協議方法") }? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
??????????????????????????????????????