zoukankan      html  css  js  c++  java
  • 为常用的块类型创建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);
  • 相关阅读:
    在 vue cli3 的项目中配置双服务,模拟 ajax 分页请求
    vue 外部字体图标使用,无须绝对路径引入办法
    json-sever 配置与应用
    使用 phpstudy 搭建本地测试环境
    自调用匿名函数(匿名闭包)解析与调用
    bootstrap-treeview 在 bootstrap 4 不兼容解决办法及使用
    SCSS 在项目中的运用
    题目1020:最小长方形(排除原点)
    题目1018:统计同成绩学生人数(数组或者map)
    大话比特币病毒
  • 原文地址:https://www.cnblogs.com/cchHers/p/8919421.html
Copyright © 2011-2022 走看看