• 对于IOSBlock使用方法,以下我对Block使用进行简单的介绍 1:首先声明一个Block指针 有参有返回值的Block声明方式如下: 无参无返回值的 void (^myBlock)(void); 有参有返回值的 int (^myBlock)(int,...

    对于IOS中Block得使用方法,以下我对Block的使用进行简单的介绍

    1:首先声明一个Block指针

    有参有返回值的Block的声明方式如下:

    无参和无返回值的

    void (^myBlock)(void);

    有参有返回值的

    int (^myBlock)(int,double);

    总结:

    返回类型  (^Block名称)(参数类型,...);


    2:Block的定义

    ^(int b){

    NSLog("%d",b);

    return b;

    };

    总结:

    ^(参数类型){

    Block主体;

    };

    Block实体开头是“^”,接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,专有名字叫做block literal。行为主体可以用return回传值,类型会被compiler自动辨别。如果没有参数列要写成: ^(void)。

    具体的使用方法如下:

    <span style="white-space:pre">	</span>int (^my)(int,int);
            my = ^(int x,int y){
                 return x+y;
             };
            
            NSLog(@"%d",my(5,6));

    结果:11

    这是代表Block会回传输入值的相加值(int a 就是参数列 return a*a; 就是行为主体)。记得行为主体里最后要加“;”,因为是叙述,而整个{}最后也要加“;”,因为Block是物件实体。

    3:单Block代码块的使用方法

    double sum = ^(double x,double b){return x+b;}(4,10);
            NSLog(@"sum=%lf",sum);
    结果:14.000000
    例如以上代码:

    定义了一个Block代码块,返回值为double,参数为double。最后(4,10)意思是指传一个4和10作为x,b的输入参数的值。

    最后结果输出14.000000

    如果是无返回值的Block代码块该怎么写?

    答:据本人测试并未测试出不使用Block指针的情况下纯Block代码块无返回值现象。故断定(单Block代码块的使用方法)必须有返回值。在第1点中我们也强调了:行为主体可以用return回传值,类型会被compiler自动辨别。所以如果想声明一个无返回类型的Block,还是请使用Block指针先声明好,然后再使用。

    附:此点如有错误,请大家指正。感谢不尽!

    展开全文
  • block声明创建以及使用 2016-08-31 17:29:23
    block声明 block的创建 访问权限 回调的用法 本人从事这么久,发现周边还是很多从事iOS的程序猿不怎么了解block 用法,即便他们其中还有几年的开发经验,但是一跟他们聊起block,他们眼睛睁得老大。另外,很多...
  • iOS Block使用 2016-12-23 14:54:16
    block定义iOS4.0系统已经开始支持Block,在编程过程中,block被OC看成是对象,它封装了一段代码,这段代码可以在任何时候执行。Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或者返回值。Blcok...
  • iOS开发 Block声明方式 2017-05-17 17:18:11
    1.写在方法里作为局部变量 returnType (^blockName)(parameterTypes) = ^...returnType是返回值blockName是block名称parameterTypes是参数 2.作为类的属性 @property (nonatomic, copy) returnType (^blockNam
  • iOS Block用法实现原理 2018-10-20 13:47:25
    《Objective-C高级编程》是一本有趣又难懂的书,全书就讲了引用计数、Block、GCD三个概念,有趣是因为讲原理、实现的部分是其它iOS专业书籍里少有的。然而每个章节不读个三五遍还是比较难理解贯通的。本文针对其中的...
  • 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量、作为参数、作为返回值,特殊地,Block还可以保存一段代码,在需要的时候调用,目前Block已经...
  • iOS Block 基本使用 2017-01-05 11:38:47
    block是一个数据类型, 多用于参数传递, 代替代理方法, (有多个参数需要传递或者多个代理方法需要实现还是推荐使用代理方法), 少用于当做返回值传递。 block是一个OC对象, 它的功能是保存代码片段, 预先准备好代码...
  • 做了大半年IOS,每次想写block的时候都发现不记得格式,总要翻一翻老代码然后copy一份,然而并不能记住,恶性循环影响工作效率。 参考:https://www.jianshu.com/p/e82bc3acc2c9记录一下block的基本用法,目标是...
  • iOS block使用总结 2016-05-03 16:17:38
    block 声明 : int (^myblock)(int a); [cpp] view plaincopy int (^myblock)(int a);
  • iOS block和代理的区别 2017-09-14 19:26:08
    block和代理是iOS开发中实现回调的两种方式,大多数情况下是用哪个都可以,主要看个人喜好。本文主要是对两者做一下对比。 1.block简介   在 iOS中, block一共分三种。   (1)全局静态 block,不会访问任何...
  • IOS block使用注意的问题 1.block 的循环引用(retain cycle) 2.去除block产生的告警时,需注意问题。
  • iOSBlock代码块的使用 2015-12-31 10:40:25
    iOS开发中Block使用随处可见,使用场景也非常多,例如在网络中进行网络请求的回调,通过Block实现逆传,封装复杂业务逻辑等等,总之Block是带有自动变量的匿名函数,在iOS开发中,能灵活掌握好Block能达到...
  • 现在的无论是框架还是项目中,越来越多的使用block代码块。 个人觉得:第一可以使代码看起来更简单明了,第二可以取代以前的delegate使代码的逻辑看起来更清晰。 借一张图表达基本定义: (1)最基础的用法案例...
  • 不会使用blockiOS程序员,不是一个合格的程序员 学会了block,你再也不想用繁琐的代理 block没有你想象中的那么难,不要害怕,不要畏惧,勇敢尝试 什么是block block其实就是一个代码块,把你想要执行的...
  • 有参数的block使用,包括声明,实现,调用 1. 声明: @property (nonatomic, copy) void(^SuccessBlock)(CGFloat,CGFloat); 2. 设置方法: [manager startLocateAndSuccessBlock:^(CGFloat latitude, CGFloat ...
  • Block函数 ... ---------- Block函数声明 ---------  */ void (^printConutry_Block)(void); double (^getPI_Block)(); void (^printArgumentsSum_Block)(int,int,int); int (^getSum_Block)(int a
  • IOSblock声明和使用 2016-03-23 11:12:36
    1、 block声明  返回值类型(^名字) (参数列表); 2、block 的实现  函数名 = ^(参数列表){具体的实现操作}; 3、block调用  函数名字(参数列表); 4、例如:定义一个传递图片的 block (1 声明) void(^...
  • iOS block简介和使用(一) 2015-07-02 15:53:04
    block官方文档(中文版) Block是什么样的?  你可以使用^操作符来声明一个Block变量,它表示一个Block的开始。...在如上代码中我们将Block声明为一个变量,所以可以将它当做一个函数中使用: NSLog(@"%
  • 1. block是1个数据类型.能不能不能作为函数的参数呢? 当然是可以的.      2. 如何为函数定义block类型的参数?  a. 就是在小括弧中声明1个指定格式的block变量就可以了.  b. 可以使用typedef简化定义,这样看起来...
  • #import "HomeViewController.h" typedef int(^Blokc)(int) ;  //Block是类型 @interface HomeViewController () @end @implementation HomeViewController - (void)v
1 2 3 4 5 ... 20
收藏数 17,767
精华内容 7,106