1.定义Block

/* 回传void ,参数也是void 的block*/

void (^blockReturningVoidWithVoidArgument)( void );

/* 回传整数,两个参数分别是整数和字元型态的block*/

int   (^blockReturningIntWithIntAndCharArguments)( int , char );

/* 回传void ,含有10 个block 的阵列,每个block 都有一个型态为整数的参数*/

void (^arrayOfTenBlocksReturningVoidWinIntArgument[ 10 ])( int );

/* 定义对象方法使用block,block中需要传入一个NSString参数,返回void*/

- (void)testBlockWithParam:(void (^)(NSString *text))block;

声明block局部变量:
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...}; 
 
声明block属性:
@property (nonatomic, copy) returnType (^blockName)(parameterTypes); 
 
接收block作为一个方法参数:
- (void)aMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName; 
 
在方法调用中将block作为一个参数传递:
[someObject someMethodThatTakesABlock: ^returnType (parameters) {...}]; 
 
定义一个block类型:
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...}; 

2.使用Block

- (void)testBlockWithParam:(void (^)(NSString *text))block{

    NSLog(@"start test");

    // 定义参数x,在testx中使用

    int x = ;

    int (^testx)(int) = ^(int num2){

        return x+num2;

    };

    NSLog(@"use x:%d",testx());

    // 使用__block标示符,定义一个可在block中修改值的参数y

    __block int y = ;

    int (^testy)(int) = ^(int num2){

        if (num2 > ) {

            y = ;

        }else{

            y = ;

        }

        return y+num2;

    };

    NSLog(@"when num2 > 10,sum = %d",testy());

    NSLog(@"when num2 <= 10,sum = %d",testy());

    [NSThreadsleepForTimeInterval:1.0f];

    block(@"success");

}

iOS block 用法的更多相关文章

  1. iOS Block 用法 (1)-once again

    Block简介: Block的实际行为和Function很像,最大的差别是在可以存取同一个Scope的变量值.Block实体形式如下: ^(传入参数列){行为主体}; Block实体开头是“^”,接着 ...

  2. ios Block详细用法

    ios Block详细用法 ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的 ...

  3. iOS Block界面反向传值

    在上篇博客 <iOS Block简介> 中,侧重解析了 iOS Block的概念等,本文将侧重于它们在开发中的应用. Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C ...

  4. iOS block从零开始

    iOS block从零开始 在iOS4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调. block的结构 先来一段简单的代码看看: void ...

  5. IOS NSInvocation用法简介

    IOS NSInvocation用法简介 2012-10-25 19:59 来源:博客园 作者:csj007523 字号:T|T [摘要]在 iOS中可以直接调用某个对象的消息方式有两种,其中一种就是 ...

  6. iOS block 机制

    本文要将block的以下机制,并配合具体代码详细描述: block 与 外部变量 block 的存储域:栈块.堆块.全局块 定义 块与函数类似,只不过是直接定义在另一个函数里,和定义它的那个函数共享同 ...

  7. iOS Block的本质(四)

    iOS Block的本质(四) 上一篇文章iOS Block的本质(三)中已经介绍过block变量的捕获,本文继续探寻block的本质. 1. block内修改变量的值 int main(int ar ...

  8. # iOS Block的本质(三)

    iOS Block的本质(三) 上一篇文章iOS Block的本质(二)中已经介绍过block变量的捕获,本文继续探寻block的本质. 1. block对对象变量的捕获,ARC 环境 block一般 ...

  9. iOS Block的本质(二)

    iOS Block的本质(二) 1. 介绍引入block本质 通过上一篇文章Block的本质(一)已经基本对block的底层结构有了基本的认识,block的底层就是__main_block_impl_ ...

随机推荐

  1. Errors were encountered while processing: mysql-server-5.5

    ubuntu 中运行完sudo apt-get install curl之后,最后出现: ldconfig deferred processing now taking place Errors we ...

  2. HZOI20190814 B 不等式

    不等式 题目大意:求解满足$L \leqslant(S×x)mod M\leqslant R$的x最小正整数解,无解输出-1 几种部分分: $L==R$,就是$ex_gcd$; 解在$1e6$以内:搜 ...

  3. Django项目:CRM(客户关系管理系统)--58--48PerfectCRM实现CRM客户报名流程学生合同

    # sales_urls.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.conf.urls import url from bpm. ...

  4. Tool-MySQL-SQLyog:SQLyog

    ylbtech-Tool-MySQL-SQLyog:SQLyog SQLyog 是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库,由业界著名的Webyog公司出 ...

  5. 给NetBeans配置javafx环境

    JavaFX开发环境安装配置,这里给大家介绍一个非常有用的步骤 从Java8开始,JDK(Java开发工具包)包括了JavaFX库. 因此,要运行JavaFX应用程序,您只需要在系统中安装Java8或 ...

  6. jqGrid首次加载时不加载任何数据

    1. 首次加载时候设置 jqGrid 属性 datatype: 'local' $("#grid").jqGrid({ url:"#", datatype:&q ...

  7. 【html、CSS、javascript-9】jquery-选择器及过滤器

    一.选择器与过滤器 选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") id="lastname" 的元素 ...

  8. laravel--设置不需要csrfToken校验的接口

    一般是前后端分离或者支付宝响应的时候需要不设置csrfToken校验的接口,laravel推荐使用passport安全校验设计接口

  9. IoT: 物联网安全测试经验总结

    前言 今年早些时候,我参与了许多关于物联网解决方案的安全测试.主要目标是找出体系结构和解决方案中的漏洞.在这篇文章中,我将讨论一些与物联网解决方案的问题和挑战. 什么是物联网? 在你学习有关IPv6的 ...

  10. WPF绘图性能问题

    代码: /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWind ...