Blocks
来源:互联网 发布:mac大型单机游戏 编辑:程序博客网 时间:2024/04/30 10:15
Blocks
Ø Block介绍
一、Block是带有自动变量的匿名函数代码块,此代码块可以作为参数传递给其他对象。
二、Block与代理协议的功能一样,都是用于做事件通信的。
三、Block也相当于Objective -C里的一种数据类型,property声明时用copy。
四、回调:block会先执行函数调用语句,接着执行赋值语句,当block获取到数值后在回调block函数调用进行赋值。
五、Block使用了全局变量,会把全局变量所在的对象retain(持有),会产生循环引用。需要把对象设置为弱引用。__block Humanb *temHa = hA(Humanb*hA = [[Humanb alloc] init]);
Ø Block语法定义
一、Block变量定义:返回值(^变量名)(函数参数...);
void (^ myBlocks)(int);// 可以不传参数,但括号要写。 // typedef:给一个数据类型取别名,newBlock:类型新名,参数列表中最好变量名添加上。typedef void (^ newBlock)(NSString *s);
Ø Block变量赋值(Block的实现):变量名 = 返回值^(参数列表){函数代码块....}
myBlock = ^void (int a, int b) {// 可以省略返回值(不包括插入符)。 NSlog(@”c = %d”,a + b);};
Ø Block函数的调用
myBlock(10,20);
Ø 定义和实现合并
void (^ myBlock2)(int, int) = ^(int a, int b) { /*1. int a局部变量,在block的实现外面不能访问。2. block调用时a变量才分配内存创建出来。3. 外部的局部变量传入block之后,就被转换为常量,值不能修改。4. __block修饰的变量可以在block的外部和内部访问。*/ NSlog(@”myBlock = %d”,a + b);}
Ø block作为方法参数,参数类型:void (^)(int)
- (void)methodUsingBlock:(void (^)(int))block;- (void)methodUsingBlock:(newBlock)block;// 通过typedef定义的block类型传参数。 - (void)methodUsingBlock:(newBlock)block {// 实现methodUsingBlock方法 block(@“关羽”,@“张飞”);// 调用block}
Ø methodUsingBlock 方法的调用
Person *per = [[Person alloc] init]; [Per methodUsingBlk:^(NSString *name1, NSString *name2) { NSlog(@”%@,和%@”,name1,name2);}];// block的实现(赋值)。
0 0
- blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Blocks
- 15.2 Blocks
- Delimiting Blocks
- Code::Blocks
- Code::Blocks
- poj2363-blocks
- blocks学习
- blocks 学习
- Code::Blocks
- IOS Blocks
- Code::Blocks
- Java高级特性 内省
- 自定义进度条样式
- 七个对我最重要的职业建议(译文)
- 志同道合者为兄弟
- ASP.NET MVC (Razor)开发 <<周报与绩效考核系统>> 总结与分享
- Blocks
- 1、checklistbox 用法总结 http://blog.sina.com.cn/s/blog_4cf58c9c010106mx.html
- 【Android】Broadcast Receiver的基本使用,推一条广播给多个Receiver
- .net 开源了
- linux sed命令详解
- Java制作证书的工具keytool用法总结
- Oracle单行函数
- iOS实现点击按钮,跳转到与mian.storyboard 中与ViewController 关联的页面
- linux 从服务器上copy文件到本地