码迷,mamicode.com
首页 > 其他好文 > 详细

Block-块代码

时间:2015-03-03 01:06:23      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

  • 定义

   ①Block是OC中的一种数据类型,在iOS开发中被广发使用

   ②^是Block的特有标记

   ③Block的实现代码包含在{}之间

     ④大多数情况下,以内联inline函数的方式被定义和使用

   ⑤Block与C语言的函数指针有些相似,但使用起来更加灵活

  • 示例

 

void(^LMLog)() = ^{
        NSLog(@"it’s a block log");
    };
    
int(^sum)(int,int) = ^(int x, int y){
        return x + y;
    };

 

 

 

  • 格式说明
    • (返回类型)(^块名称)(参数类型) = ^(参数列表){代码实现};
    • 如果没有参数,等号后面参数列表的()可以省略
  • Block可以使用在定义之前声明的局部变量

 

int i = 10;
void(^myBlock)() = ^{
        NSLog(@"%d",i);
    };
i = 100;
myBlock();

 

  1. 在定义Block时,会在Block中建立当前局部变量内容的拷贝
  2. 后续再对该变量的数值进行修改,不会影响到Block中的数值
  3. 如果需要在Block中保持局部变量的数值变化,需要使用__block关键字
  4. 使用__block关键字后,同样可以在Block中修改该变量的数值 

所以此时打印100 

  • Block可以当作参数直接传递
NSArray *arr = @[@"AAAA",@"BBBB",@"CCCC",@"DDDD"];
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"第 %d 项内容是 %@",(int)idx,obj);
        if ([@"CCCC" isEqualToString:obj]) {
            *stop = YES;
        }
    }];
  • 遍历并NSLog() arr中的内容,当obj为"CCCC"时停止遍历

 

 

Block-块代码

标签:

原文地址:http://www.cnblogs.com/yangyang1987/p/4310052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!