为常用的块类型创建typedef
本文概要:
1、块类型的语法结构
2、使用C语言中的“类型定义”的特性。使用typedef关键字用于给块类型起个别名
3、使用typedef好处之一是,重构块的类型签名时只需要改一处就行了,避免遗留bug
4、使用typedef技巧之一是,给同一块签名类型创建数个别名,方便让其他开发人员理解用途
5、对块进行类型定义时,命名规则
6、使用举例
一、块类型的语法结构
returnType(^name)(arguments);
比如:
void(^WSFActivityListSelectedBlock)(NSString *selectedId)
二、使用C语言中的“类型定义”的特性。使用typedef关键字用于给块类型起个别名
比如:
typedef void(^WSFActivityListSelectedBlock)(NSString *selectedId);
三、使用typedef好处之一是,重构块的类型签名时只需要改一处就行了,避免遗留bug
比如,现在需要添加一个selectedName参数,只需要在上面修改,然后其他使用到这个类型的地方IDE自然会报错,然后一个一个去修改就好了。
typedef void(^WSFActivityListSelectedBlock)(NSString *selectedId, NSString *selectedName);
四、使用typedef技巧之一是,给同一块签名类型创建数个别名,方便让其他开发人员理解用途
比如下面这两个块类型,所定义的签名是相同的。可以统一使用一个名字就可以了(比如:WSFActivityListHandledBlock),但是这么做的话,块与参数的用途看上去就不那么明显了。
typedef void(^WSFActivityListSelectedBlock)(NSString *selectedId, NSString *selectedName);
typedef void(^WSFActivityListDeletedBlock)(NSString *deletedId, NSString *deletedName);
五、对块进行类型定义时,命名规则
typedef void(^WSFActivityListSelectedBlock)(NSString *selectedId);
1、最好在使用块类型的类中定义,并且跟定义协议方法一样,将类名作为块类型名的前缀。
2、名字后半部分用能描述其用途的语句描述。
3、既然是类型名称,首字母肯定是要大写的。
六、使用举例
1、块类型的定义
typedef void(^WSFActivityListSelectedBlock)(NSString *selectedId, NSString *selectedName);
2、块对象的声明
@property (nonatomic, copy) WSFActivityListSelectedBlock selectedBlock;
3、块对象的定义
self.selectedBlock = ^[(NSString *selectedId, NSString *selectedName) {
NSLog(@"~~~~~~~~~~%@", selectedId);
NSLog(@"~~~~~~~~~~%@", selectedName);
};
4、块对象的调用
self.selectedBlock(self.currentId, self.currentName);
为常用的块类型创建typedef的更多相关文章
- 常用代码块:创建httpclient 2
HttpGet httpGet = new HttpGet(url);SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(ne ...
- 常用代码块:创建httpclient
HttpGet httpGet = new HttpGet(url); SSLContext sslcontext = SSLContexts.custom() .loadTrustMaterial( ...
- vs2015常用代码块与自定义代码块
常用代码块 代码段名 描 述 #if 该代码段用#if和#endif命令围绕代码 #region 该代码段用#region和#endregion命令围绕代码 ~ 该代码段插入一个析构函数 att ...
- django的Model 模型中常用的字段类型
常用的字段类型: AutoField:自增长字段,通常不用,如果未在Model中显示指定主键,django会默认建立一个整型的自增长主键字段 BooleanField:布尔型,值为True或False ...
- 转:C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、Sort)
C#常用的集合类型(ArrayList类.Stack类.Queue类.Hashtable类.Sort) .ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在Array ...
- struts2 Result Type四个常用转跳类型
Result的四个常用转跳类型分别为 Dispatcher 用来转向页面,是Struts的默认形式 Redirect 重定向到一个URL Chain 用来处理Action链 RedirectAc ...
- c#中常用的异常类型
c#中异常捕获catch{}常用的异常类型 Exception 类 描述 SystemException 其他用户可处理的异常的基本类 ArgumentException 方法的参数是非法的 ...
- 框架原理第三讲,RTTCreate,运行时类型创建.(以MFC框架讲解)
框架原理第三讲,RTTCreate,运行时类型创建.(以MFC框架讲解) 通过昨天的讲解,我们已经理解了运行时类型识别是什么. 比如 CObject * pthis = (Cobject *)Cre ...
- ORACLE常用数据库字段类型
ORACLE常用数据库字段类型 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度 ...
随机推荐
- 解决ifarme在ios下无法使用
在第一层的config 添加 <access origin="*" /><allow-navigation href="*" />< ...
- Java面向对象编程 -6.3
foreach迭代输出 对于数组而言,一般都会使用for循环进行输出,但是在使用传统for循环的时候往往采用下标的形式进行数组元素的访问. 但是在jdk1.5之后为了减轻下标对数组的影响(如果数组下标 ...
- Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) - D2. Optimal Subsequences (Hard Version)(主席树)
题意:一共有$n$个数,$m$次询问,每次询问包括$k.pos$两个数,需要你从这$n$个数里面找出$k$个数,使得他们的总和最大,如果有多种情况,找出序号字典序最小的一组,然后输出这个序列中第$po ...
- python ui自动化之元素定位和常用操作
做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 ...
- velocity的 ${} 、$!{}、 !${}
${abc} //-------过滤变量中的HTML标签 $!{abc} //-------原样输出表达式,"!"符号表示如果可以取到值则显示值,如果取不到值或值为null, ...
- 实验四《Android程序设计》
实验四<Android程序设计> 一.实验内容 1.Android Stuidio的安装测试 2.Activity测试 3.UI测试 4.布局测试 5.事件处理测试 二.实验步骤 第一部分 ...
- JQ - 绑定(on)/解绑(off)事件(浅显的见解)
on 绑定事件: $("selector").on("click",事件执行函数名); //为 selector 添加 点击事件 $("selecto ...
- springMVC 的拦截器理解
请复制以下链接看,我只是搬运工 http://blog.csdn.net/yerenyuan_pku/article/details/72567761 http://blog.csdn.net/u01 ...
- Start from here: <<OpenGL的基本程序解析>>
这是我的第一篇学习OpenGL的笔记,也是博主的第一篇博客,希望能够在这里和大家一起成长. 下面的代码是<OpenGL超级宝典(第五版)>中的示例代码,基本程序如下: #include & ...
- python pandas模块简单使用(读取excel为例)
第一步:模块安装 pip install pandas 第二步:使用(单个工作表为例) 说明:如果有多个工作表,那么只要指定sheetname=索引,(第一个工作表为0,第二个工作表为1,以此类推) ...