Objective-C--block的概念和基本使用

一、block的概念

Block对象是一个C级别的语法和运行机制。它与标准的C函数类似,不同之处在于,它除了有可执行代码以外,它还包含了与堆、栈内存绑定的变量。因此,Block对象包含着一组状态数据,这些数据在程序执行时用于对行为产生影响。

可以用Block来写一些可以传到API中的函数语句,可选择性地存储,并可以使用多线程。作为一个回调,Block特别的有用,因为block既包含了回调期间的代码,又包含了执行期间需要的数据,由于Objective-C 和 C++ 都是衍生自 C,block被设计为可同时兼容这三种语言。


二、block的基本使用


1、无参无返回值

定义一个无参无返回值的block变量并且赋值

        void (^block变量名)() = ^(){
         //代码块语句
         };

         //优化:
         void (^block变量名)() = ^{

         };
void(^myBlock1)() = ^() {  
            //代码块语句  
            NSLog(@"黑马程序员");  

        };  
void(^myBlock2)() = ^ {  
            //代码块语句  
            NSLog(@"Hello , World");  
        };  

block变量的使用

         block变量名();
//使用block变量
myBlock1();  
myBlock2();

打印结果:
2015-10-15 08:40:31.006 block的使用[990:57199]黑马程序员
2015-10-15 08:40:31.007 block的使用[1015:58597] Hello , World


2、有参无返回值

定义一个有参无返回值的block变量并且赋值

void (^变量名)(参数类型及个数) = ^(形参列表){
         //代码块语句
         };
void(^myBlock3)(int,int) = ^(int a,int b) {  
            NSLog(@"a + b = %d",a+b);  
        };  

使用有参无返回值的block,并传两个参数

myBlock3(88,99);  

打印结果:
2015-10-14 08:58:24.512 block的使用[1052:62561] a + b = 187

重新定义myBlock3

//先定义变量再赋值
myBlock3 = ^(int x,int y){  
            int max = x>y ? x:y;  
            NSLog(@"max = %d",max);  
        };  
        myBlock3(55,66);  

打印结果:
2015-10-14 08:59:35.332 block的使用[1065:63925] max = 66


3、有参有返回值

 定义一个有参无返回值的block变量并且赋值
         void (^变量名)(参数类型及个数) = ^(形参列表){

         //代码块语句:return语句;

         };
//定义一个有参有返回值的block变量并且赋值

int(^myBlock4)(int ,int ) = ^(int c,int d) {  
//代码块语句:return 语句;  
            return c+d;  
        };  

//定义变量接受返回值
int add = myBlock4(12,23);  
//打印
NSLog(@"add = %d",add);  

打印结果:
2015-10-15 09:12:53.181 block的使用[1116:68164] add = 35

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值