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

block的使用

    博客分类:
  • IOS
阅读更多

1、定义

    //无返回值 一个参数(整形):
    void (^name) (int);
    
    //无返回值 两个参数(整形,字符串):
    void (^name) (int , char *);
    
    //有返回值 两个参数
    int (^name) (char , int);

2、实现

 

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

 

      void (^name) (int) = ^(int sum)
      {
          NSLog(@"sum = %d",sum);
      };

 

或者:

 

 //无返回值
void (^name) (int);
name =  ^(int sum)
{
    NSLog(@"sum = %d",sum);
};

 

//有返回值
int (^name) (int,int);
name = ^(int one , int two)
{
    return one * two;
};

 

3、调用

 

//无返回值
name(100);
    
//有返回值的调用
int sum = name(12,37);

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

 

1、方法定义

//传入一个值,判断这个值的大小,如果符合条件,就调用block块
-(void)calculate:(int) count  withComplete:(int (^)(int sum)) result;

 

2、方法实现

 

//如果count > 10 ,就调用一个带返回值、带参数的Blcok块
-(void)calculate:(int)count withComplete:(int (^)(int sum))result
{
    if (count > 10)
    {
        int newValue = result(10*9);
        NSLog(@"newValue = %d",newValue);
    }
    else
    {
        NSLog(@"小于10");
    }
}

3、方法的实现

 

[bo calculate:11 withComplete:^(int sum) 
{
        NSLog(@"计算后的值  =  %d",sum);
        return sum-100;
}];

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

 

typedef  int (^result)(int sum);

2、定义方法

 

-(void)calculate:(int) count  withComplete:(result) sum;

 

 

 

0
0
分享到:
评论

相关推荐

    iOS block使用总结

    下面将对iOS Block的使用进行详细讲解。 1. **Block的定义** Block可以看作是一种匿名函数,它能够捕获和存储其定义时所在上下文的局部变量。Block的定义通常以`^`符号开始,后面跟着返回类型(如果有的话),然后...

    iOS Block使用教程

    在iOS开发中,Block是一种强大的编程工具,它允许我们在代码中定义匿名函数或者闭包,使得函数能够作为参数传递,也可以直接在其他函数内部定义和使用。熟练掌握Block的使用对于提升iOS应用的代码质量、可读性和效率...

    iOS Block编程

    对于Cocoa框架中的Block使用,需要特别注意内存管理问题。在Objective-C中,Block被当作对象处理,因此需要考虑引用计数。当Block被复制到堆上时,可以使用`copy`方法来保持其生命周期,而在不再需要时,应该调用`...

    block使用方法

    Block是一种在编程中广泛使用的概念,尤其在iOS开发中,它是一种可以封装代码块的引用类型。在Objective-C语言中,Block提供了一种便捷的方式来封装代码块,并可以在适当的上下文中执行。它们类似于C语言中的函数...

    block的简单使用

    下面我们将深入探讨Block的基础知识、使用方式及其在实际开发中的应用。 一、Block的基础概念 1. 定义:Block是一种闭包,它可以捕获和存储其定义时所在上下文的变量值。Block可以像函数一样被传递和调用,但它...

    swift闭包和OC block类型的使用

    Swift 闭包和 OC Block 类型的使用 Swift 闭包和 OC Block 是两种不同的编程语言中使用的closure机制, Swift 中的闭包是一种特殊的对象类型,可以 capture 和存储值,然后在以后执行时使用这些值。OC 中的 Block ...

    delegate与block的使用

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

    IOS Block的使用

    接下来,我们将详细讨论如何在iOS中使用Block,包括作为局部变量、属性以及函数参数的用法。 1. **Block作为局部变量** 在函数或方法内部,我们可以声明并定义一个Block,将其作为局部变量。Block的定义通常以`^`...

    S7 Block Privacy程序块加密工具使用方法.pdf

    S7 Block Privacy程序块加密工具使用方法.pdf

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

    在iOS开发中,Block是一种强大的编程工具,它允许我们在...了解和熟练掌握Block的使用,能有效提升iOS开发的效率和代码质量。在实际项目中,我们应灵活运用Block的各种特性,为我们的应用添加更多的灵活性和功能性。

    block回调测试

    下面我们将详细探讨Block的基础知识,Block作为回调的使用,以及如何处理回调时的参数传递。 一、Block基础 Block是Objective-C中的一个内联函数对象,它可以捕获并存储其定义范围内的局部变量,包括自动变量和...

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

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

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

    例如,我们经常在GCD(Grand Central Dispatch)中使用Block来定义后台任务,即使该任务在主线程之外执行,仍然可以访问和更新在创建Block时的变量。 Block的语法在Objective-C中表现为一对花括号 `{}` 包裹的代码...

    delegate和block的使用

    在实际开发中,`delegate`和`block`常常结合使用,例如在UITableView的cell中,既可以使用代理方法传递数据,也可以使用Block来处理点击事件。两者各有优势,选择哪种方式取决于具体需求和场景。理解并熟练运用这两...

    单例代理block的使用

    本文将深入探讨如何结合代理和Block来使用单例,以实现更灵活和可扩展的代码。 首先,让我们了解单例的基本实现。在Objective-C中,我们通常使用`@interface`、`+ (instancetype)sharedInstance`和`dispatch_once`...

    Blocks 编程要点

    当Block使用了栈上的局部变量时,如果将Block拷贝到堆上,就需要使用__block存储类型修饰符来明确指定这些变量可以在Block的副本中被修改。 需要注意的是,在Block中使用的外部变量默认是被捕获为常量值,如果需要...

    iOS block基础使用

    **iOS Block基础使用** 在iOS开发中,Block是一种强大的编程工具,它允许我们在代码中定义局部函数,可以作为参数传递,也可以返回。Block是Apple在C、Objective-C和Swift中的闭包实现,对于处理异步操作、事件回调...

    关于block的循环引用

    - 使用NSStackBlock和NSAutoreleasePool:将Block复制到堆上,并配合使用`@autoreleasepool`,可以避免Block与对象间的强引用关系。 5. ARC(Automatic Reference Counting)与循环引用: 尽管ARC能自动管理大...

    blocklist_BlockList_zip_源码

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

Global site tag (gtag.js) - Google Analytics