码迷,mamicode.com
首页 > 其他好文 > 详细

block代码块介绍

时间:2015-03-02 16:55:01      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:objective c   block   

关于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代码块介绍

标签:objective c   block   

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

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