Block函数是一种类似于函数指针的函数,程序员只需要把需要操作的代码封装到定义的block中即可,以后需要使用时,直接调用,非常方便....

举例如下:

第一种形式:自定义一个无返回值而且无参数的block

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool
{ //第一种形式:自定义无参数的block函数类型
typedef void (^FirstBlock)(void); //创建block,并将代码封装其中
FirstBlock block = ^(void){
for (int i=; i<; i++)
{
NSLog(@"i:%d",i);
}
}; //调用block函数
block(); return ;
}

运行结果:

-- ::35.317 自定义Block函数[:] i:
-- ::35.319 自定义Block函数[:] i:
-- ::35.319 自定义Block函数[:] i:
-- ::35.319 自定义Block函数[:] i:
-- ::35.319 自定义Block函数[:] i:
Program ended with exit code:

第二种形式:自定义一个无返回值但是有参数的block

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool
{
//第二种形式:自定义有参数的block函数类型
typedef void (^SecondBlock)(int); //创建block,并将代码封装其中
SecondBlock block = ^(int length){
for (int i=; i<length; i++)
{
NSLog(@"i:%d",i);
}
}; //调用block函数
block();
} return ;
}

运行结果:

-- ::35.317 自定义Block函数[:] i:
-- ::35.319 自定义Block函数[:] i:
-- ::35.319 自定义Block函数[:] i:
-- ::35.319 自定义Block函数[:] i:
-- ::35.319 自定义Block函数[:] i:
Program ended with exit code:

第三种形式:自定义有返回值但是无参数的block函数类型

typedef int (^ThirdBlock)(void);
static int sum = ;
//创建block,并将代码封装其中
ThirdBlock block3 = ^(){
for (int i=; i<; i++)
{
sum = sum + i;
}
return sum;
}; //调用block函数
NSLog(@"sum=%d",block3());

运行结果:

-- ::21.171 自定义Block函数[:] sum=
Program ended with exit code:

第四种形式:自定义有返回值而且有参数的block函数类型

//第四种形式:自定义有返回值而且有参数的block函数类型
typedef int (^FourBlock)(int);
//创建block,并将代码封装其中
FourBlock block4 = ^(int length){
return length;
}; //调用block函数
NSLog(@"block4=%d",block4());
}

运行结果:

-- ::21.171 自定义Block函数[:] block4=
Program ended with exit code:

最后还有一个知识点:

所以,对block声明为属性时,使用copy修饰。

Objective-C:自定义Block函数的更多相关文章

  1. javascript 自定义动画函数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  2. [Python自学] day-21 (1) (请求信息、html模板继承与导入、自定义模板函数、自定义分页)

    一.路由映射的参数 1.映射的一般使用 在app/urls.py中,我们定义URL与视图函数之间的映射: from django.contrib import admin from django.ur ...

  3. 关于jqGrig如何写自定义格式化函数将JSON数据的字符串转换为表格各个列的值

    首先介绍一下jqGrid是一个jQuery的一个表格框架,现在有一个需求就是将数据库表的数据拿出来显示出来,分别有id,name,details三个字段,其中难点就是details字段,它的数据是这样 ...

  4. 自定义el函数

    1.1.1 自定义EL函数(EL调用Java的函数) 第一步:创建一个Java类.方法必须是静态方法. public static String sayHello(String name){ retu ...

  5. ORACLE 自定义聚合函数

    用户可以自定义聚合函数  ODCIAggregate,定义了四个聚集函数:初始化.迭代.合并和终止. Initialization is accomplished by the ODCIAggrega ...

  6. SQL Server 自定义聚合函数

    说明:本文依据网络转载整理而成,因为时间关系,其中原理暂时并未深入研究,只是整理备份留个记录而已. 目标:在SQL Server中自定义聚合函数,在Group BY语句中 ,不是单纯的SUM和MAX等 ...

  7. Matlab中如何将(自定义)函数作为参数传递给另一个函数

    假如我们编写了一个积分通用程序,想使它更具有通用性,那么可以把被积函数也作为一个参数.在c/c++中,可以使用函数指针来实现上边的功能,在matlab中如何实现呢?使用函数句柄--这时类似于函数指针的 ...

  8. python 自定义排序函数

    自定义排序函数 Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 ...

  9. oracle 自定义 聚合函数

    Oracle自定义聚合函数实现字符串连接的聚合   create or replace type string_sum_obj as object ( --聚合函数的实质就是一个对象      sum ...

随机推荐

  1. VS中设置#define _CRT_SECURE_NO_WARNINGS的两种方式

    1.我们在编译老的用C语言的开源项目如lua源包的时候,可能因为一些老的.c文件使用了strcpy,scanf等不安全的函数,而报警告和错误,而导致无法编译通过. 2.此时我们有两种解决方案: a.在 ...

  2. hive搭建配置

    下载cd /data0/software/hivewget http://mirror.bit.edu.cn/apache/hive/hive-0.12.0/hive-0.12.0-bin.tar.g ...

  3. 使用javac命令编译java文件。

    今天想学习一下web services的知识,在网上找了一个教程,里面写了一个web services客户端调用,在cmd下执行的,但是没有给出用javac编译的细节.所以自己就借着这个机会学了一下: ...

  4. URAL 1920 Titan Ruins: the Infinite Power of Magic

    大意: 有一张N*N的网格,你每次可以走一步,每格只能走一次,有没有一种方法让走了L步后回到一个距原点1步远的格子?  没有输出Unsuitable device,否则输出Overwhelming p ...

  5. UML序列图总结

    转载请注明出处:htt://blog.csdn.net/tianhai110 序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在 ...

  6. 802.11 wireless 四

    802.11 wireless 4spread spectrum(扩频 - 基于香农定理的算法)1.窄带和扩频是发送信号的两种不同方式2.扩频技术使用更小的能量在波峰3.带宽的需要,基于发送数据的量频 ...

  7. boost之function

    boost中function是对函数指针和函数对象的进行封装的模板类. 定义示例:function<int()> func生成一个空的对象,表示函数参数个数为零,返回类型为int. #in ...

  8. 【BZOJ】【1012】【JSOI2008】最大数maxnumber

    线段树 ……现在再来看这题感觉好水啊,当年的大老虎现在也变成小花猫了,真是令人感动<_< /************************************************ ...

  9. ASP.NET为图片加上水印

    为我们发布的图片加上一个水印,也是我们经常要做的事情,那怎么样来做呢,下面就一步步开始吧 首先是一个制作水印的类:ImageHandler,代码如下: using System; using Syst ...

  10. Hungary(匈牙利算法)——二分图最大匹配

    在复习匈牙利算法的时候,发现这么一篇介绍匈牙利算法的文章,非常通俗易懂,所以就借鉴过来了. 复杂度:邻接矩阵:O(v^3)邻接表:O(V*E) 附上链接:趣写算法系列之--匈牙利算法 下面就附上代码吧 ...