block的使用总结

来源:互联网 发布:电子书转换格式软件 编辑:程序博客网 时间:2024/05/16 07:38

    在iOS开发中,为了性能和维护更好些,block的使用是一个不可回避的话题。具体使用方法,大同小异。在不同的条件下,定义形式有点差别,为了备忘,总结如下。

   1、用 typedef 定义

        格式如下:typedef  void (^onClick)(int index);

       在实现文件直接使用,如:

       onClick click = ^(int index) {
             ShowLog(@"索引为 %d 的控件被点中。", index);
       };

2、直接定义

      格式如下:void(^onClick)(int index) =  ^(int index) {
             ShowLog(@"索引为 %d 的控件被点中。", index);
       };

3、作为属性传递

       格式如下(注意,一般情况下属性关键词要用 copy 不要用其他关键词): @property(nonatomic, copy) void(^onClick)(int index);

       实现文件中实现:

      【实例化的对象】.onClick =  ^(int index) {
             ShowLog(@"索引为 %d 的控件被点中。", index);
      };

4、作为参数传递

       格式如下(主要区别是 Block 的名称作为方法参数,放在后面,并且整个 block 声明作为参数类型用圆括号括起来):【-或者+】 (void)drawDockBlock:(void(^)(int index)) onClick;

      实现文件中实现:

      [ 【实例化的对象/或者静态方法的类名称】drawDockBlock:^(int index) {

             ShowLog(@"索引为 %d 的控件被点中。", index);
      }];

   如果有总结不到位的地方,望补充。


0 0
原创粉丝点击