iOS OC Block与Swfit闭包

一、Block

Block的声明、定义和调用

  1. Block的声明
returnType(^blockName)(parameterTypes) = ^(parameters) {
        statements
    };

左边是block的声明,右边则是block的定义
returnType:block 的返回类型
blockName:block 的名字
parameterTypes:block的参数

  1. Block简单定义(没有返回值,没有参数)
void(^blockName)() = ^() {
        NSLog(@"block");
    };
  1. Block调用

那么:Block的调用呢?加个小括号即可
blockName();
3.分开写出来

//1.声明     类型:void(^ )()      名:blockName
void(^blockName)();
//2.定义
blockName = ^() {
    NSLog(@"block");
};
//3.执行
blockName();

二、Swfit闭包

闭包声明、定义和调用

//闭包声明
typealias blockName = (String) ->()
//闭包的属性
var block: blockName?
//闭包的定义
block = { (str) -> () in
    print("------\(str)")
    weakSelf!.textField!.text = str
    }
  //闭包的调用
  block!("text")

三、闭包/Block的应用场景

  1. Block当做类的属性保存代码,适当的时候调用
@interface TestBlock : NSObject
 //在对象里声明一个block
 @property (nonatomic, copy) void(^block)();

 @end
TestBlock *tb =  [[TestBlock alloc] init];
//保存到对象里
tb.block = ^() {
    NSLog(@"block");
};;

//调用block
tb.block();
  1. 把Block当做方法的参数使用
//方法声明
- (void)testBlock:(void(^)())blockName;
//方法实现
- (void)testBlock:(void(^)())blockName{
    blockName();
}
  1. 把Block当做方法的返回参数使用
//声明
-(void(^)())run;
//实现
-(void (^)())run{
    return ^() {
        NSLog(@"block");
    };
}
TestBlock *tb = [[TestBlock alloc] init];
tb.run();
  1. 当做类型的别名
//typedef returnType(^name>)(arguments);
typedef void(^TestBlock)(void);  
@property (nonatomic,copy) TestBlock *block;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值