block浅析

   // block用来保存一段代码
    // block的标志:^
    /*
     block跟函数很像
     1.可以保存代码
     2.有返回值
     3.有形参
     4.调用方式一样
     */
    
    // 定义block变量
    void (^myblock)() = ^{
        
        NSLog(@"88888");
        NSLog(@"88888");
    };
    
    // 利用block变量调用block内部的代码
    myblock();

/*
 1)如何定义block变量
 int (^MyBlock)(int, int);
 void (^MyBlock)();
 
 2)如何利用block封装代码
 ^(int a, int b) {
    return a - b;
 }
 
 ^(){
    NSLog(@"*************");
 }
 或者
 ^{
    NSLog(@"*************"");
 }
 上面两个等价
 
 3)block访问外面的变量
 *block内部可以访问外面的变量
 *默认情况下,block内部不能修改外面的局部变量
 *给局部变量加上__block关键字,这个局部变量就可以在block内部修改
 
 4)利用typedef变量定义block类型
 typedef int(^MyBlock) (int ,int);
 // 以后就可以利用MyBlock这种类型来定义block变量
 MyBlock myblock;
 MyBlock b1,b2;
 
 b1 = ^(int a, int b) {
 return a - b;
 };
 
 MyBlock b3 = ^(int a, int b) {
 return a - b;
 };
 */

 

posted @ 2015-12-04 18:23  Z了个L  阅读(128)  评论(0编辑  收藏  举报