【iOS】iOS Block基本用法记录

做了大半年IOS,每次想写block的时候都发现不记得格式,总要翻一翻老代码然后copy一份,然而并不能记住,恶性循环影响工作效率。

参考:https://www.jianshu.com/p/e82bc3acc2c9 记录一下block的基本用法,目标是流利的写出一个个block。


原型声明和定义

NSString *(^myBlock)(int);

原型声明分三部分,格式可以总结为:

返回类型(^block名)(参数类型 [参数名可选]);

个人比较常使用的场景为属性声明,比如:

@property(nonatomic, copy)void(^dismissBlock)(void);
@property(nonatomic, copy)void(^dismissBlock2)(UIView *view);

block定义的基本使用:

void (^logBlock)(NSString *)=^(NSString *paramStr){
};

定义的格式:

^(参数类型 [参数名 可选]){
[return 返回值 可选]
};

稍微延伸记录一下(属性关键字也是很不熟悉的一点)

属性copy关键字是深拷贝:

1.这个属性被赋值的时候,都会转换成不可变的类型;

2.拷贝对象的时候需要重写copyWithZone:方法。


作为方法参数

在方法声明中:

- (void)getMyBlock:(void(^)(int aa,int bb))myBlock;

格式:

- (方法返回类型)方法名:(返回类型(^)(参数类型 [参数名 可选]))block名 方法名:其他参数;

在方法定义中:

- (void)getMyBlock:(void(^)(int aa,int bb))myBlock
{

}

格式和声明相同

在方法调用中:

[self getMyBlock:^(int aa,int bb){

}];

格式:

[方法调用对象 方法名:其他参数 方法名:^(参数类型 [参数名 可选]){
    [return 返回值 可选]
}];

重命名

主要目的是方便代码阅读,记录一下代码语法

typedef 返回类型(^block名)(参数类型 [参数名可选]);

一般会这样用,简化作为原型声明和作为方法参数时的语法:

typedef void(^MyBlock)(void);

@property(nonatomic, copy) MyBlock myBlock;

-(void)method:(MyBlock)myblock;

-(void)method:(MyBlock)mybloc
{
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值