zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    Python 2.7出现但Python 3.5不出现“ImportError: No module named xxx”的解决方案
    Flask REST API サンプル(エラー処理部分を参照)
    vue:vuex store里面的数据更新后,如何在页面同步更新
    vue+VeeValidate 校验范围实例分析(部分校验,全部校验)
    postgresql时区设置,系统主机与数据库时间不一致
    执行Docker命令,提示没有权限的对应方法
    Linux Mint安装Docker注意事项
    JS过滤器(filter)的用法
    NUXT中使用自带axios
    如何通过一个网卡访问两个网段
  • 原文地址:https://www.cnblogs.com/LeeGof/p/5684386.html
Copyright © 2011-2022 走看看