iOS开发之Block(1)

概念:

这样理解Block,带有局部变量的匿名函数。


blocks模式


block的语法和字面值。下面是一个block (与函数指针的区别,函数指针至少要知道函数的函数名,继而取得指针)。


        ^{
            NSLog(@"this is a block");
        };

上面是一个block的省略形式,下面给出完整的形式。


        ^void (void){
            NSLog(@"this is a block");
        };

对比一般的c语言函数的亮点不同 (1)没有函数名  (2)带有^


Block语法的BN范式

^ 返回值类型 (参数列表) {表达式}

block 类型变量 (与出c语言函数指针的区别,仅仅是把 * 变成了 ^)


        void(^blk)(void);
        
        blk = ^void (void){
            NSLog(@"this is a block");
        };
        
        void(^blk1)(void) = blk;
        
        blk1();

block 变量的用途

(1)局部变量
(2)函数参数
(3)静态变量
(4)静态全局变量
(5)全局变量


block最为函数参数传递

#import <Foundation/Foundation.h>
#import "ACallBackButton.h"

void func(void(^block)(void));

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        void(^blk)(void);
        
        blk = ^void (void){
            NSLog(@"this is a block");
        };
        
        func(blk);
    }
    return 0;
}

void func(void(^block)(void))
{
    //block可以截获局部变量
    NSLog(@"block arg func method");
    block();
}

运行结果如下:

2014-06-21 15:30:16.957 BlockDemo[611:303] block arg func method
2014-06-21 15:30:16.958 BlockDemo[611:303] this is a block
Program ended with exit code: 0



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值