Block 学习(8.11)
来源:互联网 发布:淘宝外卖显示系统繁忙 编辑:程序博客网 时间:2024/06/11 00:15
Block:定义一段代码片段,在需要的时候调用。很多解释都是这样的,是不是一头雾水,不明白所云。反正我是好长一段时间都消化不了这个解释。最后从它的使用场景入手,才慢慢理解了这种语法的精髓,所以笔记一下,以供以后复习用。
有这样的场景在ios开发当中经常会遇到:
场景一:初始化一个页面可能一些数据是从服务器端拿回来才能赋给控件进行展示,这时候这些耗时的网络请求不可能一直等着它拿到数据再加载控件吧,这样用户体验也太差了,比较好的处理方式是先加载控件,把赋值代码放在block中,等拿到数据了再赋值。
直接上代码吧:
-(void)viewDidLoad {
[superviewDidLoad];
UILabel * lable = [[UILabelalloc]init];
[selfloaData:^(NSString * lableText) {
NSLog(@"%@",lableText);
lable.text = lableText;
}];
}
//实现block方法
-(void)loaData:(void(^)(NSString * a))block{
//耗时操作的代(网路请求)
block(@"我是耗时操作得到的数据");
}
场景二:页面间传值,在点击b页面的时候把值传到a页面。窍门哪个页面要传值在哪个页面定义blockB.h:
#import <UIKit/UIKit.h>
typedef void(^block)(NSString *);
@interface BViewController : UIViewController
@property (nonatomic,copy) block MyBlock;
@end
#import "BViewController.h"
#import "AviewController.h"
@interfaceBViewController ()
@end
@implementation BViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor = [UIColorredColor];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
self.MyBlock(@"我要传值给A");
}
#import "AviewController.h"
#import "BViewController.h"
@interfaceAviewController ()
@end
@implementation AviewController
-(void)viewDidLoad {
[superviewDidLoad];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
BViewController * bview = [[BViewControlleralloc]init];
bview.MyBlock = ^(NSString * str) {
NSLog(@"%@", str);
};
[selfpresentViewController:bviewanimated:YEScompletion:nil];
}
- Block 学习(8.11)
- block 学习
- block学习
- Block学习
- block学习
- Block学习
- block 学习
- Block学习
- block学习
- 学习block
- 包含块(containing block)学习
- (转)OC学习那些事:Block
- OC学习笔记(1) - block
- iOS深入学习(Block全面分析)
- iOS深入学习(再谈block)
- iOS深入学习(Block全面分析)
- iOS深入学习(Block全面分析)
- iOS深入学习(Block全面分析)
- sw算法求最小割学习(*)
- 为按钮添加鼠标的事件监听器
- 当React Native遇到https(Android)
- activiti导出xml
- minist例子
- Block 学习(8.11)
- sql 一次添加多条记录
- [转载] JAVA虚拟机、Dalvik虚拟机和ART虚拟机简要对比
- 【排序算法】:归并排序
- Ext3.0 GridToExcel 导出多级表头
- 快速幂
- Ending Learning for Day 11
- Python视频教程哪里有
- Properties类