block与函数

  • block是1个数据类型. 所以block类型完全可以作为函数的参数或者返回值.

block作为函数的参数

  • . 形参就直接声明1个符合要求的block变量就可以了.如果觉得恶心,可以使用typedef简化定义.
  • . 实参代码段的要求必须要和形参的要求一致.
    • 如果形参是1个无返回值无参数的block 那么实参的代码段也必须要符合这个要求.

      • . 在传值的时候.
    • 先将符合要求的代码段存储在1个block变量之中 然后再传递block变量.
    • . 也可以直接传递符合要求的代码段.
block作为函数的参数可以实现的效果.
  • 可以让调用者传递1段代码到函数的内部. 在函数的内部执行这段代码.
#import <Foundation/Foundation.h>
void test(int num1,int num2,void (^myBlock)(int num3))
{
    int num3 = num1 + num2;
    myBlock(num3);
}
int main(int argc, const char * argv[])
{
    test(10, 20, ^(int num3) {
        NSLog(@"%d",num3);
    });

    return 0;
}

这里就写了一个无返回值,带一个int类型的参数的block

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-06 00:17:04

block与函数的相关文章

Block匿名函数(转载)

块是Objective-C语言提供的一个强大特性,博主会介绍块语法的意义.块内存管理.怎样在程序中开发块和怎样使用现有API(如Foundation框架)中的块. 简言之,块提供了一种方式,使用这种方式可以创建一组语句(即代码块)并将这些语句赋予一个变量,随后就可以调用这个变量.从这方面看,块与函数方法类似,但除了是可执行代码外,块还含有与堆内存和栈内存绑定的变量.块就是一个实现的闭包(closure),一个允许访问其常规范围之外变量的函数.此外,一个Objective-C块实际上就是一个对象:

iOS 使用Block实现函数回调

其实,iOS中的Block就是C++中的函数指针,实现方式都是一样的,下面贴出一个简单的实践. 首先,创建一个回调的类 BlockStudy.h // // BlockStudy.h // BlockStudy // // Created by 杜甲 on 11/11/14. // Copyright (c) 2014 杜甲. All rights reserved. // #import <Foundation/Foundation.h> @interface BlockStudy : NS

Objective-C Block与函数指针比较

相似点 1.函数指针和Block都可以实现回调的操作,声明上也很相似,实现上都可以看成是一个代码片段. 2.函数指针类型和Block类型都可以作为变量和函数参数的类型.(typedef定义别名之后,这个别名就是一个类型) 不同点 1.函数指针只能指向预先定义好的函数代码块(可以是其他文件里面定义,通过函数参数动态传入的),函数地址是在编译链接时就已经确定好的. 2.Block本质是Objective-C对象,是NSObject的子类,可以接收消息. 3.函数里面只能访问全局变量,而Block代码

iOS中什么是BLOCK回调函数

1.回调函数类似通知.委托 2.回调函数声明.实现.回调可以在都一个类中,也可以把回调写到别的类中 3.在A类中声明函数,在实现函数中,达到满足的条件,回调,在B类中的回调函数会被调用,并去处理满足条件的事情 比如下载,如果下载完成,就触发回调函数,通知B类中的回调函数,传递一个下载完成的参数,B类的回调函数会根据参数       执行相应的代码,如果成功怎么样怎么样,如果失败怎么样怎么样,B类在A类下载过程中完全可以做他自己的事情. 4.例子(伪代码): A类a.h中声明 -(void)dow

block 块函数

定义模块函数: 1 <?php 2 function smarty_block_text($args,$content,$smarty,$a) 3 { 4 $color=$args["color"]; 5 $size=$args["size"]; 6 if(!$a) 7 { 8 $content = "<span style='color:{$color};font-size:{$size}'>{$content}</span>

block作为函数参数回调

Blocks make this much easier, however, because you can define the callback behavior at the time you initiate the task, like this: - (IBAction)fetchRemoteInformation:(id)sender {    [self showProgressIndicator];     XYZWebTask *task = ...     [task be

iOS指向函数的指针和block

  一:block基础知识 block基础知识 基本概念:block是用来保存一段代码的:^:是block得标志  好比*:是指针的标志 特点:1:保存一段代码: 2:可以有参数和返回值: 3:可以作为函数的参数传递: 与代码块的区别,代码块里的代码会自动执行,block中代码要手动调用: 二:普通数据类型.指向函数的指针.block的定义的类比 1:基本数据类型: 例如:int a = 10; 格式:数据类型  变量名 = 值: 2:指向函数的指针:可以仿照上边基本数据类型的定义 例如:voi

指向函数的指针和block

原文网址: http://www.cnblogs.com/cxbblog/p/3841226.html 一:block基础知识 block基础知识 基本概念:block是用来保存一段代码的:^:是block得标志  好比*:是指针的标志 特点:1:保存一段代码: 2:可以有参数和返回值: 3:可以作为函数的参数传递: 与代码块的区别,代码块里的代码会自动执行,block中代码要手动调用: 二:普通数据类型.指向函数的指针.block的定义的类比 1:基本数据类型: 例如:int a = 10;

Block内存管理实例分析

在ios开发中,相信说道block大家都不陌生,内存管理问题也是开发者最头疼的问题,网上很多讲block的博客,但大都是理论性多点,今天结合一些实例来讲解下. 存储域 首先和大家聊聊block的存储域,根据block在内存中的位置,block被分为三种类型: NSGlobalBlock NSStackBlock NSMallocBlock 从字面意思上大家也可以看出来 NSGlobalBlock是位于全局区的block,它是设置在程序的数据区域(.data区)中. NSStackBlock是位于