在OC中,我們經常會用typedef關鍵字來聲明Block,例如:
/** * 通用的空閉包類型,無參數,無返回值 */ typedef void (^GofVoidBlock)(void);
在Swift中,typedef關鍵字替換成了typealias。實際項目開發中,我們常用的閉包宏定義如下:
import Foundation import UIKit /// SnapKit約束閉包類型 typealias GofConstraintMaker = (ConstraintMaker) -> Void; /// 按鈕點擊回調閉包類型 typealias GofBtnClickBlock = @convention(block)(UIButton) -> Void;
(UIButton) -> Void; /// 只帶一個error參數的失敗閉包類型,主要用於處理失敗回調 typealias GofErrorBlock = (NSError) -> Void; /// 只帶一個errorMessage參數的失敗閉包類型,主要用於處理失敗回調 typealias GofErrorMessageBlock = (String) -> Void; /// 通用的空閉包類型,無參數,無返回值 typealias GofVoidBlock = (Void) -> Void; /// 通知的閉包類型 typealias GofNotificationBlock = (NSNotification) -> Void; /// 常用的返回Bool類型的閉包類型 typealias GofBoolBlock = (Bool) -> Void; /// 常用的返回Bool類型和相應提示語的閉包類型 typealias GofBoolMsgBlock = (Bool, String) -> Void; /// 常用的返回數組類型的閉包類型 typealias GofArrayBlock = ([Any]) -> Void; /// 常用的返回數組類型和錯誤提示語的閉包類型 typealias GofArrayMsgBlock = ([Any], String) -> Void; /// 常用的返回字典類型的閉包類型 typealias GofDictionaryBlock = ([String: Any]) -> Void; /// 常用的返回字典類型和錯誤提示語的閉包類型 typealias GofDictionaryMsgBlock = ([String: Any], String) -> Void; /// 常用的返回Int類型的閉包類型 typealias GofIntBlock = (Int) -> Void; /// 常用的返回Int類型和錯誤提示語的閉包類型 typealias GofIntMsgBlock = (Int, String) -> Void; /// 常用的返回String類型的閉包類型 typealias GofStringBlock = (String) -> Void; /// 常用的返回String類型和錯誤提示語的閉包類型 typealias GofStringMsgBlock = (String, String) -> Void; /// 常用的返回任何類型(包括函數類型)的閉包類型 typealias GofAnyBlock = (Any) -> Void; /// 常用的返回任何類型(包括函數類型)和錯誤提示語的閉包類型 typealias GofAnyMsgBlock = (Any, String) -> Void; /// 常用的返回任何類類型的閉包類型 typealias GofAnyObjectBlock = (AnyObject) -> Void; /// 常用的返回任何類類型和錯誤提示語的閉包類型 typealias GofAnyObjectMsgBlock = (AnyObject, String) -> Void; /// 常用的手勢回調的閉包類型 typealias GofGestureBlock = (UIGestureRecognizer) -> Void;