1、引出

1.1、int pp = 3;for循环为dd赋值并 调用 finprint(int ,int)函数 获取pp*dd的乘积,输出
void finalValue(int d, int scale){

    printf(".......%d",scale*d);
printf("\n"); } void finprint(int j,int i){ printf("其他操作\n"); void (*fin)(int d,int s) = &finalValue; fin(j,i);
} - (void)viewDidLoad {
[super viewDidLoad];
int dd ;
int pp = 3;
for (int j= 0; j<5; j++) {
dd=j;
finprint(pp,dd);
}
}

a:必须获取finalValue函数的名字,

b: finalValue如果想使用 dd,pp (也即finprint中的形式参数 j和i) 必须传递到finalValue中才可以使用;

1.2、不用必须获取finalValue函数的名字,

void finprint(int j,int  i){

    printf("其他操作\n");

    void (^fina)(int d,int s) = ^(int d,int s){
printf(".......%d",s*d);
printf("\n");
};
fina(j,i);
} - (void)viewDidLoad {
[super viewDidLoad];
int dd ;
int pp = 3;
for (int j= 0; j<5; j++) {
dd=j;
finprint(pp,dd);
}
}

1.3、不用传递参数参数也可以访问finprint中的形式参数 j和i;

void finprint(int j,int  i){

    printf("其他操作\n");

    void (^fina)(void) = ^(void){
printf(".......%d",j*i);
printf("\n");
};
fina();
}

2、 block

2.1、简单概述:带有自动变量(局部变量)的匿名函数;

1)没有函数名

2) 带有”^“号

2.2、语法格式:具体格式

^ 返回值类型 参数列表  表达式

其中  返回值类型 参数列表 可省略

block
How Do I Declare A Block in Objective-C?

As a local variable:
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...}; As a property:
@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);

As a method parameter:
- (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;

As an argument to a method call:
[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];

As a typedef:
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};
This site is not intended to be an exhaustive list of all possible uses of blocks.If you find yourself needing syntax not listed here, it is likely that a typedef would make your code more readable.Unable to access this site due to the profanity in the URL? http://goshdarnblocksyntax.com is a more work-friendly mirror.

傻瓜学编程之block_1的更多相关文章

  1. 傻瓜学编程之block_3

    block 捕获自动变量的瞬间值: 注释在代码中:请参考傻瓜学编程之block_3 import "People.h" @interface People() { int your ...

  2. 傻瓜学编程之block_2

    block的实质 以一个简单的实现为列子: - (void)myBlcokTest{ void (^blk)()=^{ printf(@“beijinghuanyingni”); }; blk(); ...

  3. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  4. 2017“编程之美”终章:AI之战勇者为王

    编者按:8月15日,第六届微软“编程之美”挑战赛在选手的火热比拼中圆满落下帷幕.“编程之美”挑战赛是由微软主办,面向高校学生开展的大型编程比赛.自2012年起,微软每年都在革新比赛命题.紧跟时代潮流, ...

  5. 网络编程之TCP/IP各层详解

    网络编程之TCP/IP各层详解 我们将应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个物联网通信的原理. 首先,用户感知到的只 ...

  6. Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)

    Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享)  点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...

  7. Python网络编程之TCP套接字简单用法示例

    Python网络编程之TCP套接字简单用法示例 本文实例讲述了Python网络编程之TCP套接字简单用法.分享给大家供大家参考,具体如下: 上学期学的计算机网络,因为之前还未学习python,而jav ...

  8. Python Flask高级编程之从0到1开发《鱼书》精品项目

    Python Flask高级编程之从0到1开发<鱼书>精品项目     整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感 ...

  9. Java并发编程之CAS二源码追根溯源

    Java并发编程之CAS二源码追根溯源 在上一篇文章中,我们知道了什么是CAS以及CAS的执行流程,在本篇文章中,我们将跟着源码一步一步的查看CAS最底层实现原理. 本篇是<凯哥(凯哥Java: ...

随机推荐

  1. Python中使用多进程来实现并行处理的方法小结

    进程和线程是计算机软件领域里很重要的概念,进程和线程有区别,也有着密切的联系,先来辨析一下这两个概念: 1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和 ...

  2. DG_Check检测

    DG_Check检测 1) all 查询备库角色(确认主备关系)set linesize 140 col dbid for 9999999999 col name for a10 col databa ...

  3. Lesson Learned

    最近,中兴ZTE违反美国商务部禁令,向伊朗出售敏感技术,被美国下达长达7年的禁止令,教训十分深刻.以诚待人,信守承诺,才能在商业社会站稳脚跟. 还是说说最近自己上的一课吧.上了港台服以后,奇奇怪怪的问 ...

  4. FragmentXlistview

    package com.example.lenovo.tablayout; /** * Created by lenovo on 2018/7/18. */ import android.os.Asy ...

  5. highchart在IE8下面的显示问题解决

    完整的代码: <!DOCTYPE HTML><html> <head> <meta http-equiv="Content-Type" c ...

  6. Mysql对用户的操作

    1.创建用户语法:CREATE USER 用户名@地址 IDENTIFIED BY '密码'; 2.给用户授权语法:GRANT 权限1, … , 权限n ON 数据库.* TO 用户名 3.撤销授权语 ...

  7. java虚拟机的学习书籍推荐

    javaEE开发已然是一个老生常谈的话题了,但经典之所以会成为经典,就是因为有可重复琢磨之处,每一次的反复推敲都会有不一样的收获.如果你不满足于做一个只会写if…else…的Java程序员,而是希望更 ...

  8. day02 格式化字符串

    字符格式化2019-04-01 方法一 通过f + {} 格式化字符串 name = input("Name: ")age = input("Age:")sco ...

  9. bootstrap顶部导航遮挡下面内容的解决办法

    使用bootstrap设置顶部导航,并将导航栏固定,代码如下: <nav class="navbar navbar-expand-lg navbar-light bg-light fi ...

  10. VS2015 IIS Express 无法启动 解决办法

    VS2015启动调试时,总是提示“IIS Web Express 无法启动”的错误, 因为其他项目都可以,就这么一个不行,基本就是配置问题,网上的办法都试了,试了都没用,试试以下解决方案: 用记事本或 ...