block(一)

作者: 土鳖不土 | 来源:发表于2015-12-19 15:50 被阅读541次

注:本文不涉及到底层实现和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系列的不足指出,或者有什么建议我会在二,三中体现。我会非常感谢

希望大家继续关注我。

相关文章

网友评论

  • 潸何吊:楼主 我用block做属性传值 老是崩在传值的那一面 然后一直提示野指针。block <parent is NULL> 。何解啊。
    e524a2d56ddc:@潸何吊 不能正向传值
    土鳖不土:@潸何吊 能看下代码吗?
  • 幻凌风:写的很好,支持!
  • 7ca4895c43c0:看不太懂..
    土鳖不土:@苦练poppinHH 哪里不懂?还是整体都不清楚? 在block(二)可能会详细说下 循环引用等

本文标题:block(一)

本文链接:https://www.haomeiwen.com/subject/dkaphttx.html