在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;

27.怎样在Swift中声明typedef?的更多相关文章

  1. Swift中声明协议中的class关键字的作用

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近在Cocos2D编程for Swift中看到以下一个代码片 ...

  2. Swift: 比较Swift中闭包传值、OC中的Block传值

    一.介绍 开发者对匿名函数应该很清楚,其实它就是一个没有名字的函数或者方法,给人直观的感觉就是只能看到参数和返回值.在iOS开发中中,它又有自己的称呼,在OC中叫Block代码块,在Swift中叫闭包 ...

  3. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  4. Swift 中的函数

    学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 练习一: import Foundation //函数 ...

  5. iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包

    本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类 1. 1 如何在swift的类中使用oc类    1.2  如何在swift中实现oc的代理 ...

  6. 一览Swift中的常用关键字

    要学习Swift这门语言,就必须先了解Swift的关键字及对应的解释.这里就列一下在Swift中常用到的关键字. 关键字是类似于标识符的保留字符序列,除非用重音符号(`)将其括起来,否则不能用作标识符 ...

  7. swift学习笔记 - swift中常用关键字

    swift中常用关键字 **用作声明的关键字: ** class.deinit.enum.extension.func.import.init.let.protocol.static.struct.s ...

  8. 浅谈 Swift 中的 Optionals

    input[type="date"].form-control,.input-group-sm>input[type="date"].input-grou ...

  9. swift中block的使用

    在OC中习惯用block来传值,而swift中,block被重新定义了一下,叫闭包: 使用的技巧:谁定义谁传值:   案例使用A.B控制器: 1~4步在B中执行,最后在A中执行: - B控制器: 1- ...

随机推荐

  1. linux 命令部分说明

    shell 文件头格式   #! /bin/sh 定义变量  dir_tmp=/tmp/xxx 级联创建 mkdir -p /etc/aaa/bbb 阻塞命令 等待用户输入回车  继续    read ...

  2. JVM——三个ClassLoader详解

    类装载工作由ClassLoader及其子类负责,ClassLoader是一个重要的Java执行时系统组件,它负责在运行时查找和装入Class字节码文件.JVM在运行时会产生三个ClassLoader: ...

  3. 使用Rxjava缓存请求

    最近,我尝试使用RxJava开发了一款闲时备份app.我必须承认,一旦你get到了正确的方式,RxJava几乎感觉就像作弊.一切看起来更简洁,多个请求能够被组合,且非常容易控制.通过在UI线程观察和在 ...

  4. php获取网站根目录

    php获取网站根目录方法一:<?phpdefine("WWWROOT",str_ireplace(str_replace("/","\\&quo ...

  5. selenium python (四)键盘事件

    #!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #在实际测试过程中,有时候我们需要使用tab键将焦点转移到下一个需要操作 ...

  6. javascript针对DOM的应用

    所谓针对DOM的应用.也就我这里只教大家用javascript操作页面中dom元素做交互.我相信可能大部分人来这里学javascript主要还是想用这个结合页面中的DOM元素做一些实际有用的交互效果. ...

  7. Nodejs_day03

    1.Stream (流) Stream有四种流类型 1.Readable - 可读操作 2.Writable - 可写操作 3.Duplex - 可读可写操作 4.Transform - 操作被写入数 ...

  8. 代码以兼容高亮方式发布.xml

    函数名: abort  功  能: 异常终止一个进程  用  法: void abort(void);  程序例:  #include <stdio.h>  #include <st ...

  9. lua Date和Time

    time和date两个函数在Lua中实现所有的时钟查询功能.函数time在没有参数时返回当前时钟的数值.(在许多系统中该数值是当前距离某个特定时间的秒数.)当为函数调用附加一个特殊的时间表时,该函数就 ...

  10. Mysql explain分析SQL语句之字段属性说明

    在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快.如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的 ...