Block系列1:初识block
//-------1、定义函数----- //1、函数
int sum(int a,int b)
{
return a+b;
}
//------------------2、声明--------- //2、声明函数指针【将sum换成*p就能够了】
int (*p)(int a,int b); //(1)声明block【将sum换成^myBlock就能够了】
int (^myBlock)(int a,int b); //举一反三
void (^myBlock2)(void);
- (void)viewDidLoad
{
[super viewDidLoad]; //---------------------3、赋值【不同之处】------------------
// 3、给函数指针赋值
p = sum;
//(2)将函数赋值给myBlock【^后面加參数列表,以及代码块内容,并以“;”结束】
myBlock = ^(int a,int b)
{
return a+b;
}; //---------------------4、调用------------------
//4、调用
int result = p(3,6);
NSLog(@"%d",result);
//(3)调用
int resultBlock = myBlock(3,6);
NSLog(@"%d",resultBlock); myBlock2 = ^(void)
{
NSLog(@"myBlock2运行了");
}; myBlock2(); //---------------------二、文件之间传值------------------
//block的调用
Person *person = [[Person alloc]init];
//1-2实现block
// ^int(int a, int b) {
// return a+b;
// }
//把person的10和20传到本文件里
//局部变量到block中是常量。如需改变值则须要在声明前面加 __block
__block int number = 10; int resultPs = [person testMethod:^int(int a, int b) {
number = 20;
return a+b+number;
}];
//typedef 方式创建
int resultPs2 = [person testMethod2:^int(int a, int b) {
return a+b;
}];
NSLog(@"resultPs:%d resultPs2:%d",resultPs,resultPs2); } @end
Person.h
#import <Foundation/Foundation.h>
//这里的PersonBlock是类型名字,能够理解为int
typedef int(^PersonBlock) (int a,int b);
@interface Person : NSObject //1-1在參数中声明【int(^)(int a, int b】
- (int)testMethod:( int(^)(int a, int b) )block;
//这里不须要加星号
- (int)testMethod2:(PersonBlock)block;
@end
Person.m
#import "Person.h" @implementation Person
//1-3调用block
- (int)testMethod:( int(^)(int a, int b) )block
{
return block(10,20);
} - (int)testMethod2:(PersonBlock)block
{
return block(1,2);
}
@end
Block系列1:初识block的更多相关文章
- Block系列2:Block内存管理
ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController { UIImag ...
- 初识block
我们可以把Block当做Objective-C的匿名函数.Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观.另外,block的实现具有封闭性(clos ...
- 写给喜欢用Block的朋友(ios Block)
作者:fengsh998原文地址:http://blog.csdn.net/fengsh998/article/details/38090205转载请注明出处如果觉得文章对你有所帮助,请通过留言或关注 ...
- block的用法以及block和delegate的比较(转发)
看到一篇写的关于block和delegate放在一起来方便大家理解的文章,感觉不错,就推荐给大家来看一下. 代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙 ...
- Objective-C中Block语法、Block使用以及通过Block实现数组排序
Block:语法块,本质上是匿名函数(没有名称的函数) 标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数 在C++.JS.Swift等语言有类似语法,叫做闭包 Block语法和C语言里的 ...
- WCF编程系列(一)初识WCF
WCF编程系列(一)初识WCF Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型.WCF的基本概念: 地址:定义服务的 ...
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值) 使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...
- Block高级用法:Block传值UI_12(3)
1.简单复习Block的定义.赋值.调用做学习传值铺垫: //声明一个函数 无返无参void printfHello(int a);//函数的实现void printfHello(int a){ ...
- 文件系统的block 数据库中的block 以及内存中的page基础知识汇总(自己理解 可能有误)
1. 操作系统文件系统中的的block 文件系统中的block 是文件系统最小的读写单元,在HDD的磁盘时代, 一般block的大小可能与磁盘的扇区大小一致为 512bytes 也因为这个原因MBR启 ...
- ORA-01578 ORACLE data block corrupted (file # 29, block # 2889087)
BW数据库后台报错如下:F:\oracle\SBP\saptrace\diag\rdbms\sbp\sbp\trace ORA-01578: ORACLE data block corrupted ( ...
随机推荐
- Java中接口的作用
转载于:https://www.zhihu.com/question/20111251 困惑:例如我定义了一个接口,但是我在继承这个接口的类中还要写接口的实现方法,那我不如直接就在这个类中写实现方法岂 ...
- Linux 终端操作之「I/O Redirection」
I/O 重定向是在终端运行程序时很常用的技巧,但是我对它所知甚少.今天我在 DigitalOcean 上发现了一篇很好的 tutorial.这篇随笔记录一下我的心得体会和发现的一个问题. I/O re ...
- [luoguP2763] 试题库问题(最大流)
传送门 每个类别和它所有的试题连一条权值为1的边. 增加一个超级源点s,s和每个类别连一条权值为选当前类别数量的边. 增加一个超级汇点t,每个试题和t连一条权值为1的边. 求最大流即可. ——代码 # ...
- 刷题总结——生产产品(vijo1243)
题目: 描述 在经过一段时间的经营后,dd_engi的OI商店不满足于从别的供货商那里购买产品放上货架,而要开始自己生产产品了!产品的生产需要M个步骤,每一个步骤都可以在N台机器中的任何一台完成,但生 ...
- php错误报告
; This directive controls whether or not and where PHP will output errors, ; notices and warnings to ...
- iOS-文件断点续传
* 移动客户端在和服务器交互的时候,上传和下载使用十分广泛. * 在我们下载文件的时候,我们在点击暂停的时候可以暂停下载,点击下载的时候可以继续下载,这个功能如何实现? * 下载进度条如何显示? 先大 ...
- oracle 导出表结构信息
直接贴sql: select cols.table_name 表名, cols.column_name 列名, cols.data_type 字段类型, cols.data_length 长度, co ...
- Android系统默认语言改为中文
第一种方法: 修改 build/tools/buildinfo.sh echo "ro.product.locale.language=zh"echo "ro.produ ...
- [List] C#数组学习
数组概述 C# 数组从零开始建立索引,即数组索引从零开始.C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似.但还有一些差异应引起注意.声明数组时,方括号 ([]) 必须跟在类型后面,而不是 ...
- POJ 3660 Cow Contest 传递闭包+Floyd
原题链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS Memory Limit: 65536K Total Subm ...