您的位置:首页 > 移动开发 > IOS开发

Block的应用场景

2015-08-18 13:40 429 查看
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);


运行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios Block