Objective-C Block
来源:互联网 发布:vscode 代码片段 编辑:程序博客网 时间:2024/06/14 18:11
简介
Block在我们的开发中是非常常见的,比如值得反向传递,我们定义一个Block,就可以完成,对我们编程非常的方便,那么Block到底是从哪里来的呢?他有哪些注意事项?
Block:其实就是一段代码块,也称作闭包。Block是C语言提供的功能,Objective-C是基于C语言,自然Block也具有同样的功能,同时更加强大。
Block使用
Block定义:返回值类型/方法 (^块名称)(参数的类型) = ^(参数类型 参数名){执行的操作} 。 例如:
//无返回值void (^firstBlock)(int) = ^(int age){print("%d/n",age);}//返回一个int类型的值int (^firstBlock)(int) = ^(int age){return age+1;}
Block使用
1、反向传值
- 在需要(B)传值的页面定义Block
typedef void (^ReturnTextBlock)(NSString *showText);@interface nickNameViewController : UIViewController@property (nonatomic, copy) ReturnTextBlock returnTextBlock;- (void)returnText:(ReturnTextBlock)block;@end
- 在需要传值(B)控制器实现方法
- (void)returnText:(ReturnTextBlock)block { self.returnTextBlock = block;}- (void)viewWillDisappear:(BOOL)animated { //判断Block是否存在,在使用的地方赋值 if (self.returnTextBlock != nil) {//赋值Block self.returnTextBlock(self.inputTF.text); }}
- 在需要用值(A)页面实现并调用
- (void)clickNickName{ NickNameViewController *nickNameVC = NickNameViewController(); [nickNameVC returnText:^(NSString *showText) { self.nickNameLabel.text = showText; }];}
2、NSArray遍历
一下方法是我经常用到的非常方便,拿出来晾一晾。
[array enumeratorObjectsUsingBlock: ^(id obj, NSUInteger index, BOOL *stop){ NSLog(@"%i-%@",index,obj); //若终断循环 *stop = YES; }];
这个enumeratorObjectsUsingBlock:提供三个参数,每一个item 下表 是否结束便利。实际开发中还是挺方便的。
总结一下: Block作为属性,Block作为方法参数还有作为代理。
PS
Block作为开发中的利器,那么它的内部实现是什么,还有在使用Block需要注意什么,有哪些关键字可以让我们方便的使用?
0 0
- objective-c block 讲解
- objective-c block 讲解
- objective-c block 详解
- objective-c block 讲解
- objective-c block 讲解
- Objective-C block
- objective-c block 详解
- objective-c block 详解
- Objective-C中的Block
- Objective-C中的Block
- objective-c block 详解
- Objective-C中的Block
- Objective-C中的Block
- objective-c block 讲解
- Objective-C block
- objective-c block 详解
- objective-c block 详解
- objective-c block 详解
- (一)错误小记——${pageContext.request.contextPath}无效
- oracle 60-raw.rules和99-oracle-asmdevices.rules区别
- 设备驱动的简单理解
- 需要更加努力才配得上过去的自己
- 变量选择--Lasso
- Objective-C Block
- HDU 3698 Let the light guide us dp+线段树维护区间极值
- Web攻防系列教程之 PHP + Mysql注入攻防实战
- How to Setup a TFTP Server Under CentOS/RHEL 6
- 32. Longest Valid Parentheses
- 33. Search in Rotated Sorted Array(无敌2分)
- 34. Search for a Range
- 怎么实现类似"今日头条"app
- 35. Search Insert Position