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. java线程图

  2. php调用微信发送自定义模版接口

     function sendWechatmodel($openid,$data,$go_url)//接受消息的用户openid,发送的消息,点击详情跳转的url        {           ...

  3. 设计模式 --深入理解javascript

    /* 一.单例模式 */ var Universe; (function () { var instance; Universe = function Universe() { if (instanc ...

  4. Visual Studio 2013 各版本注册码

    Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9 Visual Studio Premium 2013 KEY(密钥) ...

  5. TCL随记(1)

    string 函数: string compare [-nocase] [-length int] str1 str2 把字符串str1和str2进行比较,返回值为-1/0/1,分别对应str1小于/ ...

  6. 【转载】错误:ORA-28002: the password will expire within 7 days 解决方法

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:xwdreamer      原文地址: 错误:ORA-28002: the ...

  7. 【BZOJ】【1018】【SHOI2008】堵塞的交通traffic

    线段树 这题的线段树+分类讨论蛮神奇的……我以前学的线段树简直就是渣渣QAQ 看了下ydc题解里的思想>_>用线段树维护连通性!那么就自己写吧……每个节点表示一段区间的连通性(我的叶子节点 ...

  8. 实现IDisposable接口的模式

    代码: public class Class2 : IDisposable { ~Class2() { Dispose(false); } public void Dispose() { Dispos ...

  9. QGraphics

    QGraphicsView和QGraphicsScene QGraphicsScene提供一个场景,可以添加各种item,QGraphicsView用于将元素显示,并支持旋转和缩放:可以将QGraph ...

  10. Environment.SpecialFolder.CommonApplicationData

    private void button1_Click(object sender, EventArgs e) { var path=Environment.GetFolderPath(Environm ...