Block

   一:Block的声明:

    void(^myBlock)(int); 

     ↑          ↑          ↑ 

  返回值   变量名    参数 

有返回值 和多个参数形式的例子:

    int(^myBlock((int, NSString *, NSObject);

   二:Block的创建:

   myBlock = ^(int i){

      NSLog(@"%d", i);

};

    或者:

void(^myBlock)(int) = 

^(int i){

      NSLog(@"%d", i);

};

  三:Block的使用:

  myBlock(100);

就像NSLog(@"aaaaa");一样,直接调用;

   四:Block当做参数传递给方法:

   - (void) testBlock:(void(^)(int)) myBlock{

      myBlock(10);

}

    调用的时候: [self testBlock:myBlock];

或者直接创建一个匿名的Block

   [self testBlock:^(int i){

    NSLog(@"%d", i);

}];

   可以打个断点查看调用堆栈情况,这是一个回调,调用方法的之后再去调用块里的代码;

    五:使用typedof定义代码块类型

typedef void(^MyBlock)(int);//红色的是块类型的名称

    创建:

MyBlock block = ^(int i){

        NSLog(@"sss");

    };

    使用:

block(1);

   在方法里当做参数就更简便了:

- (void)testBlock1: (MyBlock) block{

    

}

 

 

   

posted @ 2013-08-16 17:29  墨禾米说  阅读(241)  评论(0编辑  收藏  举报