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的简单使用方法的介绍

时间: 2024-11-08 19:11:22

block代码块介绍的相关文章

block 代码块 反向传值

block 代码块 也称作闭包 与C语言函数类似  具有反向传值.回调的功能 block公式分两种: ①声明和实现写到一块的公式 返回值类型(^block名字)(参数列表 参数类型 参数名) = ^(参数列表 参数类型 参数名){ 实现代码(如果有返回值 需要return 返回值类型的值) }; 调用:block名字(参数); ②声明和实现分开写的公式 (1)声明 返回值类型(^block名字)(参数列表); (2)实现 block名字 = ^(参数列表){ 实现代码(如果有返回值 需要retu

IOS Block代码块的定义与使用

代码块的本质是和其他的变量类似,不同的是,代码块存储的数据是一个函数体.使用代码块,你可以像调用其他标准函数一样的调用,可以传入参数,并得到返回值.     脱字符是代码块的语法标记.下图表示代码块的定义. 1.代码块的基本使用 //无参数无返回值 void (^myblock)() = ^() { NSLog(@"Hello, World!"); }; myblock(); //带参数无返回值 void (^myblock2)(NSString *string) = ^(NSStri

Block代码块分析

1.block 在程序运行中保存一段代码 block标志:^ 可以保存代码,有返回值,有形参 2.定义block变量 int (^sumblock)(int, int); 3.block默认可以访问外面的变量,不可以修改外面的局部变量 给局部变量加上_block关键字,这个局部变量就可以在block内部修改 4. //没有形参没有返回值的block void(^myblock)() = ^{ NSLog(@"没有返回值的block"); }; //当调用block时才会执行,调用方法:

iOS:使用block代码块实现事件处理过程中的回调

block是什么,这里就不多加强调了,它的优点: 第一:执行效率高,速度快 第二:使用起来比代理简单,省却不少代码,增强代码美感 有一些小的知识点要强调一下: 第一点:它类似于一个匿名函数,也跟java中的匿名内部类相似,但是,记住,它是一种基本数据类型: 第二点:在类中声明block为属性时,如果使用assgin修饰,那么它被放到了栈中,方法已过就会被销毁,所以,尽量使用copy作为修饰词,这样一来block就被存放到了堆中,生命周期就会延长,保证block不会被立即销毁: 第三点:要防止循环

黑马程序员-block代码块和protocol协议

一.block block是一个变量,这个变量类似c语言中的函数指针,在回调场合用的特别多.它可以封装代码,有返回值有形参.下面通过代码来说明block的定义和使用. 首先来看没有返回值没有形参的block 1 void (^myblock)() = ^{ 2 NSLog(@""); 4 }; 有返回值有形参的block 1 int (^sumblock)(int, int) = ^(int a, int b){ 2 return a + b; 3 }; 4 5 int c = sum

初学Objective - C语法之代码块(block)

一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block的声明:返回值类型(^block变量名)(参数列表) 脱字符(^)是块的语法标记 二.block实现 block变量名 = ^返回值类型(参数列表) 1.  sayHi = ^{ NSLog(@"你好"); }; 2. operateOfValue = ^ NSInteger (NSInt

IOS笔记-代码块(微博项目)-1.0

1.gcd子线程block代码块 2.遍历子控件 设置系统控件属性 3.UITabBar_tabBarItem字体颜色设置

Ruby基础类型,动态特性,代码块

#Ruby内置基础数据类型 NilClass,TureClass,FalseClass,Time,Date,String,Range,Struct,Array,Hash #Numerice 1.分为Interger整数类.Interger又分为Fixnum和Bignum. #2.#Float浮点数 #3.Complex复数. #Bury的动态特性 #1.动态执行字符串形式的代码 eval #2.动态获得模块或类中的常量和变量的值 #3.动态为类或对象添加方法 #4.对为知变量和方法的动态处理 #

Scala基础篇-02函数与代码块

1.block 代码块也是表达式,其最终求得的值是最后一个表达式的值. {exp1;exp2} { exp1 exp2 } 2.function def funtionName(param:ParamType):ReturnType{ //function body: expressions } 3.例子 利用字符串插值特性:s"...${...}..." 省略花括号: 原文地址:https://www.cnblogs.com/moonlightml/p/9864560.html