码迷,mamicode.com
首页 > 移动开发 > 详细

iOS学习-9 - 1 .Block 入门

时间:2016-04-16 16:45:41      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

来自李明杰的视频。

block 用来保存一段代码

block 的标志:^

block  跟函数很像

1).可以保存代码  2).有返回值  3). 有形参

temp1:没有返回值、没有形参的 block

如果 block 没有形参,可以省略 ()

void(^myblock)() = ^{
        NSLog(@"----------");
        NSLog(@"----------");
    };
    // 利用 block 变量调用 block 内部的代码
    myblock();

temp2:有返回值,有形参

int (^sumblock)(int,int) = ^(int a,int b){
        return a+b;
    };
    //返回值
    int c = sumblock(1,1);
    NSLog(@"%d",c);

temp 3:用一个 block 输出 n 条横线

void (^lineblock)(int) = ^(int n){
        for (int i = 1; i < n; i++) {
            NSLog(@"-------");
        }
    };
    //无返回值,加 int 类型的参数
    lineblock(5);

temp 4

__block int a = 10;
    void (^block)();
    block = ^{
        /*
         block 内部可以访问外面的变量
         默认情况下,block 内部不能修改外面的局部变量
         给局部变量加上 __block 关键字,这个局部变量就可以在block内部修改
        */
        a = 20;
        NSLog(@"%d",a);
    };
    block();

temp 5:使用 typedef 定义 block 类型

// 类型 + 变量
    MyBlock sumBlock;
    sumBlock = ^(int a,int b){
        return a+b;
    };
    sumBlock(10,9);
    //减法
    MyBlock minusBlock;
    minusBlock = ^(int a,int b){
        return a - b;
    };
    minusBlock(10,9);
    //乘法
    MyBlock multipBlock;
    multipBlock = ^(int a,int b){
        return a * b;
    };
    multipBlock(10,9);
    //除法
    MyBlock divideBlock;
    divideBlock = ^(int a,int b){
        return a / b;
    };
    divideBlock(10,2);
    
    NSLog(@"\n %d \n %d \n%d \n %d",sumBlock(10,9),minusBlock(10,9), multipBlock(10,9),divideBlock(10,2));

 总结:

1.如何定义 block 变量

int (^sumBlock)(int,int);
void (^myBlock)();

2.如何利用 block 封装代码

^(int a,int b){
        return  a - b;
    };
    //没有参数
    ^(){
        NSLog(@"-----");
    }
    //没有返回值
    ^{
        NSLog(@"-----");
    }

3.  block 访问外面变量

1.block 内部可以访问外面的变量
2.默认情况下,block 内部不能修改外面的局部变量
3.给局部变量加上 __block 关键字,这个局部变量就可以在block内部修改

4.利用 typedef 定义 block 类型

typedef int(^MyBlock)(int,int);
    //以后就可以利用 MyBlock 这种类型来定义 block 变量
    MyBlock block;
    MyBlock b1,b2;

    b1 = ^(int a,int b){
    return a+b;
    };

    MyBlock b3 = ^(int a,int b){
    return a+b;
    };

 

iOS学习-9 - 1 .Block 入门

标签:

原文地址:http://www.cnblogs.com/asamu/p/5398520.html

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