首页 > 其他 > 详细

block代码块介绍

时间:2015-03-02 16:51:50      阅读:131      评论:0      收藏:0      [点我收藏+]

关于block的简单介绍

什么是block?

Block是C语言的一个语法特性,同时也是C语言的运行时特性,它很像C中的函数指针,因为你可以像使用函数指针一样的去使用block对象;它也很像C++中的函数对象,因为除了要执行的代码,block还可以携带和block绑定的状态信息。

代码块的结构

技术分享

代码块的简单赋值与调用

//        将block块赋值给一个变量testblock,然后直接通过变量来调用代码块中的代码
        int(^testblock)(int a, int b) = ^(int a, int b){
            return a + a + b * a;
        };
        
        NSLog(@"\n------testblock代码块执行方法为:%d", testblock(3,6));

代码块的直接嵌入

//        在很多情况下,我们并不需要将block宣告成变量,我们可以直接在需要使用block的地方用内嵌的方式将block的内容写出来.
//        注意:在直接写代码块的时候,这个代码块是否有返回值,返回值的类型都是在一开始定义的函数中写好了的。
        /*[[TTIHttpClient shareInstance] getTopNewsRequestwithpage:(int) withpagesize:(int) withSucessBlock:^(TTIRequest *request *request, TTIRequest * response) successBlock withFailedBlock:^(TTIRequest *request *request, TTIRequest * response) failedBlock
        
        [[TTIHttpClient shareInstance] getTopNewsRequestwithpage:1 withpagesize:PAGESIZE withSucessBlock:^(TTIRequest *request, TTIResponse *response) {
            
            NSArray *results = [response.result objectForKey:@"result"];
            //存进缓存文件中
            [ICDataStorage saveArray:results forKey:HEADNEWSLISTCACHE];
            
        } withFailedBlock:^(TTIRequest *request, TTIResponse *response) {
        }];
        */

__block的使用

block内只能读取在同一个作用域的变数而且没有办法修改在block外定义的任何变数,此时若我们想要这些变数能够在block中被修改,就必须在前面挂上__block的修饰词

int number1 = 1;
        __block int number2 = 2;
        
        void(^block__test)() = ^(){
            number1++;//这句话不可以执行,因为没有 __block 前缀
            number2++;
        };
        block__test();//调用代码块
        NSLog(@"%d", number1);
        NSLog(@"%d", number2);

以上就是block的简单使用方法的介绍

block代码块介绍

原文:http://blog.csdn.net/daiyibo123/article/details/44019615

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!