Block的应用场景

Block的应用场景

对象与对象之间的通信方式

1.代理-协议 1对1
2.通知 1对多
3.Block 1对1 但不需要协议

三种通信方式都实现了对象之间的解耦合。

通知的通信方式是1对多; 代理、block是1对1

Block介绍

Block是iOS4.0之后新增的一种语法结构,也称为“闭包(closure)”。
SDK4.0新增的API大量使用了Block。
Block是一个匿名的函数代码块,此代码块可以作为参数传递给其他对象。

对象

方法{
block块{
…代码
}
}

Block初探

//定义block的实现
[self objectMethod:^(int a, int b) {
NSLog(@”这是回调的block函数”);
return a+b;
}];

  • (void)objectMethod:(int (^)(int, int))block{
    //调用block块
    block(10,20)
    }

Block的声明

返回值 block变量 参数
int (^ myBlocks)(int);

Block的创建

myBlocks= ^(int a){
int result = a * a;
return result;
};

Block的调用

int ret = myBlocks(10);

project: BlockDemo

new file … name:MainViewController
superclass:UIViewController

打开 AppDelegate.m

加入 #import “MainViewController.h”

在 - (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions 中的

[self.window makeKeyAndVisible]; 下面加入

self.window.rootViewController = [[[MainViewController alloc] init] autorelease];

打开 MainViewController.m

在 - (void)viewDidLoad 中的 [super viewDidLoad]; 下面加入

//---------------block声明与创建-------------------

//声明一个block变量 变量名为myBlock
int(^myBlock)(int);
//或者写法为 int(^myBlock)(int a)一般都不加参数名字 用不上
//无参写法   int(^myBlock)(void)

//创建block
myBlock = ^(int a){
    NSLog(@"参数:%d",a);
    return 10;
};

//调用block
int ret = myBlock(20);

运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值