iOS开发- 关于Block的几种应用

关于Block,博主不才,简单分为三种来用:

  • 像函数一样定义和使用,,不同于函数的是可以定义在方法内也可以定义在方法外
  • 定义成property的属性来使用
  • 用作修饰词

接下来一样样的来展示;
1.像函数一样定义和使用,,不同于函数的是可以定义在方法内也可以定义在方法外

1)在方法中使用

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
      NSString *(^thisBlock) (NSString *thisName) = ^(NSString *name){
        return [NSString stringWithFormat:@"%@:%@",@"name",name];
    };
    NSLog(@"%@",thisBlock(@"xiaoming"));
}

2)在方法外使用,就像定义一个方法一样

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    BlockVoid(24);


}
void (^BlockVoid) (int age) = ^(int xiaomingAge){
    NSLog(@"xiaomingAge:%d",xiaomingAge);
};

总结: 上面俩block也是block的一种写法不过这么用的貌似不多见,大多时候这么写反而显得麻烦了(从这里可以看出,block可以定义在方法内部也可以定义在方法外部,在外部的时候看着是不是更像函数了)

2.定义成property的属性来使用
这是一种我们经常用的方法,举个例子

/**
 常规无返回值有参数block,比较常用
 */
@property(nonatomic,copy)void (^myBlock) (NSString *name,int age);

/**
 常规有返回值有参数block,使用起来其实和上面那个差别不大
 */
@property(nonatomic,copy)NSString *(^haveReturnBlock) (NSString *name);

//用法
- (void)test2
{
    _myBlock(@"CodeLiu",24);
}

- (NSString *)test3
{
    return _haveReturnBlock(@"小花");
}

除了这个用法,还有一种很好玩的用法,看着比较生动,其实是一样的:

#import <Foundation/Foundation.h>

/**
 定义一个block

 @param returnContent 返回值
 */
typedef void(^RetureContentBlock)(id returnContent);

@interface LHBlockForUse : NSObject

/**
 用定义的block来声明一个变量
 */
@property(nonatomic,copy)RetureContentBlock returnBlock;

@end

//用法
- (void)test1
{
    _returnBlock(@"You can put every type in here");
}

3.用作修饰词

在Block内是不能修改Block外的变量的,如果要修改就需要用__block进行修饰

__block int lastAge = 24;
    void (^lastAgeBlock) (int age) = ^(int addAge){
        lastAge = lastAge + addAge;
        NSLog(@"xiaomingLastAge:%d",lastAge);
    };
lastAgeBlock(1);

以上是Block的简单应用,如果哪里写的不好欢迎指正,下载地址:Block 的简单使用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingFire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值