考虑到block的创建问题网络上已经有很多文章,所以我这里就不做过多的阐述,有需要的盆友们可以自己去找一下哈~我这里只对block平时不注意的地方进行一下描述
1.Block的定义
void (^block)() = ^(){
NSLog(@"block");
};
此block的类型:void(^)()
Block的调用:block();
2.Block的快速创建
输入inlineBlock,回车即可出现
// blockName:block的变量名
returnType(^blockName)(parameterTypes) = ^(parameters) {
statements
};
3.设置block的别名:typedef void(^myBlock)( int a);
myBlock myBlock = ^(int a){
NSLog(@"%d", a);
};
myBlock(2);
4.Block的内存泄露
block需要注意内存泄露的问题,在平时的使用中可以这样避免内存泄露的出现
// 加在block前面
typeof(self) __weak weakSelf = self;
[ViewController returnBlock:^(BOOL finished) {
if (finished) {
// 之后要把此block里所有的self用weakSelf替换掉
[weakSelf makeDate];
[weakSelf theLineChange];
}
}];
这样可以保证当前的这个block不存在内存泄露的问题,考虑到项目中的block很多地方都会用到,推荐将typeof(self) __weak weakSelf = self;这句话写成宏,用起来会方便很多
5.关于block的其他方面
Block作用:跟函数和方法很像,就是用来保存一段代码,等到恰当的时候再去使用
Block使用范围,:用block传值,处理网络的时候经常使用block封装代码
请求网络数据(延迟)先把展示到空间的代码先保存到block,等请求到数据的时候直接调用block