Swift3.0 Delegate和Block的實現
Swift3.0 中代理的使用方法
一、宣告協議
1.制定協議
protocol DelegateName:NSObjectProtocol {
//設定協議方法
func method()
}
2.用weak定義代理
weak var delegate:DelegateName?
3.判斷代理是否存在,讓代理去執行方法
func clickButton() {
//'?'代替了responsed
delegate?.method()
}
注:不寫NSObjectProtocol不會報錯,但是寫屬性是無法寫weak。在Swift中,制定協議需要遵守NSObjectProtocol協議,除了類可以遵守協議,結構體也可以遵守協議,在OC中我們制定協議,通常繼承自NSObject,可以這樣理解,所有繼承自NSObject的物件都可以實現協議方法。
二、遵守協議
1.遵守協議
class ViewController:UIViewController,DelegateName { //遵守協議
2.設定代理為self
customView?.delegate = self
3.實現協議方法
func method() {
print(#function)
}
Swift3.0 中Block的使用方法
- 在B中宣告一個block
typealias TestBlock = (String)->()
- 持有一個block變數
var blo: TestBlock?
- 呼叫
self.blo?("It is block test")
- 在
A
中需要接受值的地方
let b = B()
b.blo = {str in
print("test block---\\(str)")
}
相關文章
- 網路回撥:Block和Delegate的對比BloC
- block沒那麼難(一):block的實現BloC
- 深入研究Block捕獲外部變數和__block實現原理BloC變數
- block實現原理BloC
- 如何避免UITableView重寫大量delegate以及n多if-else判斷和BlockUIViewBloC
- iOS - 對 block 實現的探究iOSBloC
- C#--基於delegate實現不同功能的排序C#排序
- 使用 Block 實現 KVOBloC
- 理解 Block 實現原理BloC
- 探索iOS中Block的實現原理iOSBloC
- 談Objective-C Block的實現ObjectBloC
- iOS中Block實現原理的全面分析iOSBloC
- iOS 揭露Block的內部實現原理iOSBloC
- display:block display:inline-block 的屬性、呈現和作用BloCinline
- 深度解析 Delegate 和 Notification 和 KVO
- QListView配合Model和Delegate工作的例子View
- Object-C語言Block的實現方式ObjectC語言BloC
- c#之delegate和eventC#
- 使用C# (.NET Core) 實現觀察者模式 (Observer Pattern) 並介紹 delegate 和 eventC#模式Server
- 用JScript實現VB.Net,C#的[委託Delegate]: (轉)JSC#
- Objective-C block 實現機制ObjectBloC
- Block實現鏈式程式設計BloC程式設計
- iOS開發之protocol和delegateiOSProtocol
- 基礎才是重中之重~delegate裡的Invoke和BeginInvoke
- 執行時Hook所有Block方法呼叫的技術實現HookBloC
- 代理的基本使用(delegate)
- C#中的delegateC#
- Unused Block Compression和Null Block CompressionBloCNull
- oracle的block其實是和os的扇區相對應!OracleBloC
- Swift3.0 - 遇到的坑Swift
- [譯] Jquery中 .bind() .live() .delegate() 和 .on() 之間的區別jQuery
- (筆記) Delegate的再進化:Action Generic Delegate (.NET) (C#)筆記C#
- 使用PHP4中的 IntegratedTemplate類實現BLOCK功能 (轉)PHPBloC
- block沒那麼難(三):block和物件的記憶體管理BloC物件記憶體
- C#-delegateC#
- block沒那麼難(二):block和變數的記憶體管理BloC變數記憶體
- swift3.0後的for in寫法Swift
- 誰能說說SessionFacade的粒度,以及和Delegate的關係?Session