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);
  • 相关阅读:
    日常练习-利用python的random模块模拟身份证号码
    学习笔记-redis
    学习笔记-AJAX&JSON
    学习笔记-JQuery
    学习笔记-Filter&Listener
    学习笔记-EL&JSTL
    学习笔记-Cookie&Session
    学习笔记-Response
    学习笔记-XML
    JToken中并没有Value这个属性,但在运行时可以看到,用dyna可以取到这个属性值
  • 原文地址:https://www.cnblogs.com/cchHers/p/8919421.html
Copyright © 2011-2022 走看看