`
liubo0_0
  • 浏览: 22298 次
社区版块
存档分类
最新评论

block的简单使用

 
阅读更多

1、定义

Oc代码
  1. //无返回值一个参数(整形):
  2. void(^name)(int);
  3. //无返回值两个参数(整形,字符串):
  4. void(^name)(int,char*);
  5. //有返回值两个参数
  6. int(^name)(char,int);

2、实现

要实现block的具体函数
例如:

Oc代码
  1. void(^name)(int)=^(intsum)
  2. {
  3. NSLog(@"sum=%d",sum);
  4. };

或者:

Oc代码
  1. //无返回值
  2. void(^name)(int);
  3. name=^(intsum)
  4. {
  5. NSLog(@"sum=%d",sum);
  6. };

Oc代码
  1. //有返回值
  2. int(^name)(int,int);
  3. name=^(intone,inttwo)
  4. {
  5. returnone*two;
  6. };

3、调用

Oc代码
  1. //无返回值
  2. name(100);
  3. //有返回值的调用
  4. intsum=name(12,37);

作为Block,他的主要作用就是回调。也就是把block,当成一个参数,进行传递。

1、方法定义

Oc代码
  1. //传入一个值,判断这个值的大小,如果符合条件,就调用block块
  2. -(void)calculate:(int)countwithComplete:(int(^)(intsum))result;

2、方法实现

Oc代码
  1. //如果count>10,就调用一个带返回值、带参数的Blcok块
  2. -(void)calculate:(int)countwithComplete:(int(^)(intsum))result
  3. {
  4. if(count>10)
  5. {
  6. intnewValue=result(10*9);
  7. NSLog(@"newValue=%d",newValue);
  8. }
  9. else
  10. {
  11. NSLog(@"小于10");
  12. }
  13. }

3、方法的实现

Oc代码
  1. [bocalculate:11withComplete:^(intsum)
  2. {
  3. NSLog(@"计算后的值=%d",sum);
  4. returnsum-100;
  5. }];

以上的写法中,withComplete中block可读性不高。可以把block单独定义。
例如:
1、定义block

Oc代码
  1. typedefint(^result)(intsum);

2、定义方法

Oc代码
  1. -(void)calculate:(int)countwithComplete:(result)sum;

分享到:
评论

相关推荐

    iOS Block使用教程

    - "BlockDemo"项目可能包含了简单的网络请求示例,使用Block处理请求的响应。 - 可能包括创建网络请求对象,设置success和failure Block,然后发起请求。 - 通过BlockDemo,我们可以实际操作理解Block在网络请求...

    delegate与block的使用

    以压缩包中的`MyLayoutSimple`为例,可能是一个简单的布局管理系统,它可能使用Delegate来定义布局规则,如确定视图的尺寸和位置,而使用Block来处理布局过程中的自定义行为,如动画效果或特定条件下的特殊处理。...

    iOS Block 的使用, 包括传值, 基本用法

    Block不仅可以简化复杂的代码结构,还可以实现回调机制,使得异步操作变得简单易懂。本篇文章将深入探讨iOS Block的基本用法以及如何传递值。 ### 1. Block的基本结构 Block 是一个对象,它可以捕获并存储在其定义...

    ios-Block基础,block传值,及自定义block方法.zip

    为避免循环引用,可以使用弱引用(`__weak`)或者使用`__block`关键字对局部变量进行修饰,使得Block内部可以修改该变量。 4. **自定义带Block的方法**: 在类或对象中定义方法时,可以将Block作为参数,这样可以...

    block实现例子(介绍block的代码)

    以下是一个简单的Block定义和使用示例: ```objc // Block类型声明 typedef void (^MyBlock)(void); // 使用Block MyBlock myBlock = ^{ NSLog(@"这是Block内的代码"); }; // 调用Block myBlock(); // 输出 "这...

    block使用方法

    使用Block可以使得异步编程变得更加简单,它允许开发者在不涉及多线程的复杂性的情况下,以同步的方式来处理异步事件。 Block的语法是通过使用^符号来定义的。一个基本的Block定义的语法如下: ```objective-c int...

    block简单回调,

    下面我们将深入探讨“block简单回调”的概念、定义以及实际应用。 1. **Block的基本概念** - Block是C语言的扩展,是一种闭包,能够捕获和存储其所在上下文中的变量。 - Block分为栈Block和堆Block,栈Block生命...

    Block示例代码,帮助学习block的使用

    本项目"BlockTest"提供了一个简单的示例,帮助初学者理解并学习如何在自定义UITableViewCell中使用Block。 首先,了解Block的基本语法结构。Block语法通常以`^`符号开始,后跟返回类型(如果有的话),然后是参数...

    blocklist_BlockList_zip_源码

    开发者可能使用各种编程语言(如JavaScript、Python、C++等)来解析和处理这些XML数据,构建BlockList功能。解析XML的过程通常涉及DOM(文档对象模型)、SAX(简单API for XML)或XPath(XML路径语言)等技术。 ...

    SAP方丈-Coding Block详解x.doc

    在SAP编程中,良好的Coding Block设计可以提高代码的可读性和可重用性,使得维护和扩展工作变得更加简单。ABAP是SAP的一种编程语言,主要用于开发和定制SAP系统中的业务逻辑。 首先,我们来了解Coding Block的基本...

    BlockRead_delphi_delphiblockread_blockread_blockreaddelphi_

    以下是一个简单的使用示例,演示如何使用`BlockRead`从文件中读取数据: ```delphi uses System.SysUtils, System.IOUtils; var FileStream: TFileStream; Buffer: array [0..1023] of Byte; BytesRead: ...

    block测试代码

    例如,一个简单的Block定义,接收一个整数参数并返回一个字符串: ```objc int (^myBlock)(int) = ^(int number) { return [NSString stringWithFormat:@"%d", number]; }; ``` Block分为三种类型:全局Block、栈...

    Block反向传值Demo

    在Objective-C或Swift中,Block是一种强大的闭包类型,可以捕获并存储其所在上下文中的变量,使得这些变量可以在Block内部使用,甚至在Block被传递后依然可以访问。下面我们将深入探讨Block反向传值的概念、应用场景...

    iOS的block回调

    下面是一个简单的使用Block作为回调的例子: ```objc - (void)fetchDataWithCompletion:(void(^)(NSData *data, NSError *error))completion { NSURLSession *session = [NSURLSession sharedSession]; ...

    OC中以block形式页面传值

    总结来说,OC中以Block形式实现页面间的传值,能够提供一种简洁且高效的方式,尤其是对于简单的数据传递和回调需求。然而,对于更复杂的数据流管理,可能需要结合其他设计模式,如MVVM或RAC等。理解并熟练运用Block...

    特别简单的block

    虽然Block提供了很多便利,但过度使用或不恰当使用Block可能导致性能下降,因为Block拷贝和内存管理会增加额外开销。因此,在编写高效代码时,应合理使用Block。 9. **Block与Closures的对比**: Swift的Closure...

    变block成同步执行

    将异步Block改为同步Block主要涉及到GCD的使用。在GCD中,我们可以使用`dispatch_sync`函数来实现Block的同步执行。以下是一个简单的示例: ```objc // 假设我们有一个异步Block void (^asyncBlock)(void) = ^{ //...

    code block 官方使用手册

    这些代码片段可以是简单的文本模块,也可以是链接到其他文件或网址。 #### 三、日志和其他输出 Code Blocks 提供了一个专门的窗口来显示搜索结果、编译器日志消息以及其他相关信息。这对于调试和问题追踪非常有用...

    Delegate&Block作回调

    例如,可能有一个ViewController,它既可以使用Delegate来与另一个对象通信,也可以使用Block来执行一些简单的回调操作。通过这种方式,学习者可以更深入地理解这两种回调机制,并在实际项目中做出明智的选择。 ...

Global site tag (gtag.js) - Google Analytics