27.怎样在Swift中声明typedef?
在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;
无善无恶心之体,
有善有恶意之动,
知善知恶是良知,
为善去恶是格物。