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. C++中的set和java的hashset有何区别?

    以前对C++的STL容器烂熟于心,两年没碰过C++了,现在已经很生疏了.工作原因转战java,对java的容器不甚了解,特别是每看到一种容器,不由自主地拿起和C++对比.C++中的set和java的h ...

  2. 结队开发项目——基于Android的无线点餐系统——NABC模型

    特点:通过提前订餐,可以节约学生大量的排队时间. N(need):生活中可以发现许多同学都喜欢出去买饭,而且在有的摊位需要排很长时间的队,这样他们就会很晚吃到饭,下午有课的学生都不能睡午觉,所以通过我 ...

  3. Surface Pro 3 扩展坞体验

    Surface Pro 3 的确是Microsoft的诚意之作,虽然价格不便宜,但值得入手. 买完Surface Pro 3 后,没事在某网站上闲逛,这货(扩展坞)映入我的眼帘,看完后,心想,这货必须 ...

  4. 在ubuntu上搭建reviewboard

    review board 2.0.5 ubuntu ubuntu-12.04.1-desktop-amd64 基本上基于这个教程:http://alephnullplex.appspot.com/bl ...

  5. web前端网页特效大全导航列表

    CSS3和Html5 图表与图形 表单验证 导航菜单 table选项卡 视频播放器 日期和时间 返回顶部 图层代码 滚动代码 幻灯片 文字特效 图片放大镜 juqery焦点图 瀑布流 广告悬浮代码 在 ...

  6. BLUR

    ssao的blur遇到个麻烦 花了两三天时间...终于大概知道原因了. 在nvidia的ssao(http://developer.download.nvidia.com/SDK/10.5/direc ...

  7. apple wwdc resource

    1. every wwdc topic list http://asciiwwdc.com 2. wwdc video直接查看apple develop-> video 3. wwdc open ...

  8. redis集群部署之codis 维护脚本

    搞了几天redis cluster codis 的部署安装,测试,架构优化,配合研发应用整合,这里记一些心得! 背景需求: 之前多个业务都在应用到redis库,各业务独立占用主从两台服务器,硬件资源利 ...

  9. webvector将html转为svg或者png图片的工具

    有些js较多,html组织不好的页面转换起来很不理想,cnblog转换的还不错 http://cssbox.sourceforge.net/webvector/

  10. SOA之(3)——面向服务计算基础

    面向服务计算基础(Service-Oriented Computing Fundamentals) 面向服务的计算(Service-Oriented Computing) 面向服务的计算是一个伞状术语 ...