block(一)

注:本文不涉及到底层实现和block原理。

先说下block长怎么样子吧“

 **Block变量格式: 返回值类型(不可省略, 最少void) + (^变量名称) + (参数) (不可省略, 至少()).  格式和函数指针很相似,只是把*改成了^.

好了接下来按照下面一点一点来讲解

  • block(作为参数)
  • block(作为属性)
  • block(作为返回值)

block作为参数:

1. //定义一个block(没有返回值 用void来表示,block名字为JFCallBack,以^还表示他是一个block,传一个参数为字符串)

typedef void (^JFCallBack) (NSString *name);

2./*声明一个类方法 ,参数为block*/

+(void)JFProductBlock:(JFCallBack)callBack;

3./*实现该带参数的block 并通过block参数进行回调的类方法*/

+(void)JFProductBlock:(JFCallBack)callBack{
/通过参数回调 传一个字符串参数/
callBack(@"JF");
}

4./*调用该带参数的block 的类方法*/

[ JFBlockASParameter JFProductBlock:^(NSString *name) {
NSLog(@"%@", name);
}];

在控制台里面打出来:

�block作为参数

block作为属性:

1./*声明block属性*/

@property(nonatomic, copy)JFCallBack block;


2./*重写block属性的set方法*/

-(void)setBlock:(JFCallBack)block{
_block = block;
block(@"111");
}

3./*调用该block的属性*/

JFBlockASParameter *blockParmeter = [[JFBlockASParameter alloc]init];
blockParmeter.block = ^(NSString *str){
NSLog(@"%@", str);
};

控制台打出来:


block作为属性

block作为返回值:

1./**声明一个block方法返回值为block

+(JFCallBack )JFProductBlock;


2.实现返回值为block的方法

+(JFCallBack )JFProductBlock{
return ^(NSString *str){
NSLog(@"%@", str);
};
}

3./*调用返回值为block 的方法*/

JFCallBack block = [JFBlockASParameter JFProductBlock];
/block回调进行传参/
block(@"JF 作为返回值");
}

作为返回值

block(一)很基础适合新手入门。

接下来会有block(二),block(三)和大家见面。

希望大家指出我的block系列的不足指出,或者有什么建议我会在二,三中体现。我会非常感谢

希望大家继续关注我。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容