关于Block的简单使用

  Block在整个iOS开发中无所不见,很重要,很重要,文本在这里block的简单使用介绍。我们可以简单地定义、使用block。

  1. Block和C的指针函数很像,但比C的函数灵活多了。废话了。。。。

    例子比较:

 1 //C函数
 2 int funSum(int a, int b) {
 3     return a + b;
 4 }
 5 
 6 int main(int argc, const char * argv[]) {
 7     @autoreleasepool {
 8         
 9         //定义了pointSum这种指针类型, 这种指针类型指向函数        
10         typedef int (*pointSum) (int, int);
11         
12         //定义了一个指针变量ps, 赋值funSum
13         pointSum ps = funSum;
14         
15         //C函数调用
16         int a = ps(12, 23);     // (*ps)(12, 23);
17         NSLog(@"a = %i", a);
18     }
19     return 0;
20 } 
int main(int argc, const char * argv[]) {
    @autoreleasepool {

        //定义了blockSum这种block的类型,注blockSum为类型名
        typedef int (^blockSum) (int, int);
        
        //定义了一个blockSum类型的block变量bs 并为其赋值block块内容
        blockSum bs = ^(int a, int b) {
            return a + b;
        };
        int a = bs(12, 34);
        NSLog(@"a = %i", a);
    }
    return 0;
}

  2. Block定义及使用

 1 void BlockDemo() { 
 2    
 3     //声明  一个名为blockSum返回值为int类型,接受两个int、int类型的参数的Block, 也可以写成这样 int (^blockSum) (int a, int b);
 4     int (^blockSum) (int, int);
 5     
 6     //赋值 (这个名为blockSum的代码段所要做的事情)
 7     blockSum = ^(int a, int b) {
 8         return a + b;
 9     };
10     
11     //调用这个block赋值给变量a
12     int a = blockSum(1, 3);
13      NSLog(@"a=%i", a);   //a = 4
14 }

 

 1 typedef int (^blockSum) (int, int);     //typedef修饰的block类型,这种类型可以定义任意多,我们在开发中它来定义block很常见
 2 void blockDome() {
 3     //int c =100000000;
 4     __block int c =100000000;   //此处是两个"_"
 5     blockSum bs = ^(int a, int b){
 6         a = 4;   //block代码快可以访问局不变量,但不能修改局不变量的值, 若要修改必须在定义该变量前加__block修饰
 7         c = a + b;
 8         return a + b;
 9     };
10     
11     NSLog(@"block修改前:c = %i", c);
12     bs(1, 4)
13     NSLog(@"block修改后:c = %i", c);
14 }

 

   

posted @ 2015-08-10 15:21  无法修盖  阅读(219)  评论(0编辑  收藏  举报