iOS Block 基本使用
来源:互联网 发布:js 图片点击查看大图 编辑:程序博客网 时间:2024/06/04 18:40
此文章仅做个人笔记
block是一个数据类型, 多用于参数传递, 代替代理方法, (有多个参数需要传递或者多个代理方法需要实现还是推荐使用代理方法), 少用于当做返回值传递。
block是一个OC对象, 它的功能是保存代码片段, 预先准备好代码, 并在需要的时候执行。
block分为三类:
1.无参数,无返回值
//定义无参无返回值的Block void (^printBlock)() = ^(){ printf("no number"); }; printBlock();
2.有参数,无返回值
//定义一个有参数,没有返回值的Blockvoid (^printNumBlock)(int) = ^(int num){ printf("int number is %d",num);};
3.有参数,有返回值
//定义名为myBlock的代码块,返回值类型为int int (^myBlock)(int) = ^(int num){ return num*mutiplier; } //使用定义的myBlock int newMutiplier = myBlock(3);
对于block,我们常用来进行反向传值
需求:有一个页面V1, 点击一个按钮push到页面V2,在V2中输入多个文本存放到dictionary中,点击V2的确定按钮回到V1,并把dictionary传给V1页面。
V2.h中的代码
#import <UIKit/UIKit.h>@interface V1ViewController : UIViewController/* 定义了一个addApplyDetail的block。 * 这个block必须带一个可变字典类型的参数 * 无返回值 */typedef void(^addApplyDetail)(NSMutableDictionary *dict);//用上面定义的addApplyDetail 声明一个block ,声明的合格block必须遵守声明的要求@property (nonatomic,copy) addApplyDetail applyDetail;@end
V2.m中的代码
1.将输入的多个文本存放到字典当中
- (void)textFieldDidEndEditing:(UITextField *)textField { NSString *text = textField.text; NSString *textIndexPath = [NSString stringWithFormat:@"%ld",(long)textField.tag]; [self.textDict setObject:text forKey:textIndexPath];}
2.点击确定按钮传值
- (void)SureBtnClick { [self.view resignFirstResponder]; self.applyDetail(self.textDict); [self.navigationController popViewControllerAnimated:YES];}
V1中的代码
- (void)AddBtnClick { ApplyDetailViewController *applyDetail = [[ApplyDetailViewController alloc]init]; applyDetail.applyDetail = ^(NSMutableDictionary *dict){ [self.applyArray addObject:dict]; [self.tableView reloadData]; }; [self.navigationController pushViewController:applyDetail animated:YES];}
1 0
- iOS Block 基本使用
- iOS中Block基本使用
- iOS开发中block基本使用
- iOS Block的基本语法与使用
- iOS 协议代理.block的基本使用
- iOS Block的基本使用以及Block传值
- iOS - block基本使用方法
- IOS系列——Block的基本使用
- IOS开发 block(代码块)基本使用
- Block的基本使用
- block的基本使用
- iOS block 基本用法总结
- ios 中使用 block
- IOS 使用Block
- iOS 使用Block
- IOS之Block使用
- iOS block使用
- iOS学习-Block使用
- JS中,|| 和 && 的使用
- FileNet小错误汇总
- Flex和后台连接的时候报错MessageS…
- SSL连接出问题。。SSL peer&n…
- 我的博客今天2岁5天了,我领取了先…
- iOS Block 基本使用
- fielnet创建ObjectStore报错:an&nb…
- The value given f…
- the.net api com c…
- A Web services re…
- filent直接查询container(Folder)…
- DB2 使用sql语句查询表的字段…
- FNRCS0005E: SECURITY_INVALID_CRE…
- more the one WASS…