int multi = 7;
        
        int (^myBlock)(int) = ^(int num){
            return num * multi;
        };
        int result = myBlock(5);
        NSLog(@"结果是:%d",result);
//输出结果是:

结果是:35

void (^printBlock)(NSString *x);
        printBlock = ^(NSString* str)
        {
            NSLog(@"print:%@", str);
        };
        printBlock(@"这是个block!");
//输出结果:

print:这是个block!

//字符串数组排序

NSArray *strArr = [NSArray arrayWithObjects:@"abc 02",@"abc 1",@"abc 2", @"abc 21", @"abc 12",@"abc 13",@"abc 15",nil];
        NSComparator sortBlock = ^(id str1, id str2)
        {
            return [str1 compare:str2];
        };
        NSArray *Arr = [strArr sortedArrayUsingComparator:sortBlock];
        NSLog(@"这个数组是:%@", Arr);
//输出结果:

这个数组是:(
    "abc 02",
    "abc 1",
    "abc 12",
    "abc 13",
    "abc 15",
    "abc 2",
    "abc 21"
)
//很神奇,竟然默认为10 和 20;如果不加0的话。

static void (^ const blocks)(int) = ^(int i)
        {
            if (i > 0) {
                
                NSLog(@"数字:%d", i);
                blocks(i - 2);
//                NSLog(@"shuzi:%d",i);
//                blocks(i + 2);
            }
        };
        blocks(10);
        
//输出的是 10 8  6 4 2

注:千万不能往上加!!

int num = 500;
        int main(int argc, const char * argv[])
        {
            @autoreleasepool {
                void(^block)(void) = ^(void)
                {
                    num++;
                    NSLog(@"输出:%d", num);
                };
                block();
                NSLog(@"输出:%d", num);
            }
            return 0;  
        }
//运行结果:

输出:501

输出:501

//在代码块中改变局部变量编译不通过,会报错。要在代码块中改变局部变量,需要在局部变量前面加上关键字:__block

__block int local = 500;
        void(^block)(void) = ^(void)
        {
            local++;
            NSLog(@"local:%d", local);
        };
        block();  
        NSLog(@"local:%d", local);
//注:两个下划线_+_合成的__block

简单的block的更多相关文章

  1. iOS 简单动画 block动画

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ UIView * view = [ ...

  2. bLock 回调 就是这么简单!

    转载自:http://blog.csdn.net/mobanchengshuang/article/details/11751671 我们在开发中常常会用到函数回调,你可以用通知来替代回调,但是大多数 ...

  3. Block使用

    1.对block的理解 >  block是iOS4.0之后出现的,是仿照java中匿名函数所创造的,它是c级别的语法,效率比协议-代理高 >  block的是一个匿名函数(没有名字的函数) ...

  4. iOS OC语言: Block底层实现原理

    先来简单介绍一下BlockBlock是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,Block可以在任何时候执行. Block和函数的相似性:(1)可以保存代码(2) ...

  5. block的使用

    转载自:http://mobile.51cto.com/hot-403897.htm 一.概述 Block是C级别的语法和运行时特性.Block比较类似C函数,但是Block比之C函数,其灵活性体现在 ...

  6. Block 及注意事项

    block 概念 block 是 C 语言的 是一种数据类型,可以当作参数传递 是一组预先准备好的代码,在需要的时候执行 block 的注意事项 (1)block 在实现时就会对它引用到的它所在方法中 ...

  7. iOS block 的底层实现

    其实swift 的闭包跟 OC的block 是一样一样的,学会了block,你swift里边的闭包就会无师自通. 参考:http://www.jianshu.com/p/e23078c11518 ht ...

  8. Block存储区域

    Block存储区域 首先,需要引入三个名词: ● _NSConcretStackBlock ● _NSConcretGlobalBlock ● _NSConcretMallocBlock 正如它们名字 ...

  9. 堆block和栈block的区分

    0. 问题所在 下面给出一段代码: - (NSArray*) getBlockArray { int num = 916; return [[NSArray alloc] initWithObject ...

随机推荐

  1. Bugtags 实时跟踪插件 - BugtagsInsta

    BugtagsInsta 是 Bugtags SDK 的官方插件,应用集成成功后,可以在 Bugtags 云端管理平台实时查看应用的运行时数据:操作步骤.用户数据.控制台日志.Bugtags 日志.网 ...

  2. [C#对Oracle操作]C#操作调用Orcale存储过程有参数

    /// <summary> /// 获取ERP固定资产计提数据 /// </summary> /// <param name="strCompanyCode&q ...

  3. X-Cart 学习笔记 完整目录

    如果有需要,可以直接联系博主,讨论学习 一.了解X-CART. 3 二.PHP环境搭建... 3 三.安装配置X-CART. 4 1.下载X-Cart并配置域名,映射地址... 4 2.配置X-Car ...

  4. 【HOW】如何限制Reporting Services报表导出功能中格式选项

    Reporting Services报表导出功能中缺省会提供多种导出格式选项,但很多情况下不需要全部的格式选项,因此需要对这些选项进行限制.下面我们以SQL Server 2008 R2为例来说明对这 ...

  5. NOIP201307货车运输

    2016.1.28 试题描述 A 国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有q辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多 ...

  6. 国内常用DNS地址介绍

    1.谷歌全球通用DNS地址: 首选DNS地址:8.8.8.8 备选DNS地址:8.8.4.4 2.国内知名的114 DNS地址 首选DNS地址:114.114.114.114 备选DNS地址:114. ...

  7. fgtyn

    http://www.studiocleo.com/projects/ballettechnique/one_11.html

  8. 使用Struts2搭建登录注册示例

    使用Struts2来搭建mvc网站框架还是比较容易的,Struts2提供了各项辅助功能,保证了web开发的快速方便.下面使用struts2来搭建一个登录注册示例. 0 项目结构截图 1 搭建Strut ...

  9. Windows WMIC命令使用详解

    本文转载出处http://www.jb51.net/article/49987.htm www.makaidong.com/博客园文/32743.shtml wmic alias list brief ...

  10. Qt 环境下MAPX组件的编程

    使用mapx打包文件可以方便的迅速开发,今天介绍一种不使用打包文件,直接使用mapx组件的编程方法. 就像之前介绍flash控件编程的方法,首先建立一个qt demo.基于那个的窗口都可以. 本den ...