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]; 下面加入
运行
对象与对象之间的通信方式
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);
运行
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Ruby中Block和迭代器的使用讲解
- Ruby中使用Block、Proc、lambda实现闭包
- Ruby中的block、proc、lambda区别总结
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- ios通过按钮点击异步加载图片