Block的基本使用

block基本使用

  • 在日常的开发中,我们经常会用到block,或者说是使用block来减少我们的代码量,比如说:控制器之间的传值,虽然使用代理等也可以实现,但是使用代理的时候代码量比较大,这个时候使用block就会很方便。
  • 最常用的就是在处理网络请求的时候,有返回值的时候需要执行的代码,自己封装的时候通常都是使用block(当然了,AFNetworking内部就是使用了大量的block)
  • block的作用:block的作用和函数和方法很像,就是用来保存一段代码,等到需要的时候再去调用

block的定义

  • 想知道Block如何定义??在Xcode中输入inlineBlock,将会出现的代码段就是Block的定义方法.
returnType(^blockName)(parameterTypes) = ^(parameters) {
    statements
};

// 注意:当有参数的时候,左右两边的写法是不一样的,左边只需要参数的类型,不需要参数名,但是右边的需要参数类型和参数

// 有返回值有参数的
返回值(^block名称)(参数列表) = ^(参数列表){

};
//没有返回值有参数
void(^block名称)(参数列表) =^(参数列表){

};
//没有返回值没有参数
void(^block名称)() = ^{

};

使用

  • 定义成属性
    • 定义成属性的时候需要使用copy,也不需要带“*
    • 在ARC中可以使用strong和copy,但是在MRC中只能使用copy
// 第一种方法
// 先定义一个别名
typedef void(^YWBlock)(NSString *name);
// 声明一个属性
@property(nonatomic, copy) YWBlock ywBlock;

// 第二种方法
// 直接写在属性中
@property(nonatomic, copy) void(^YWBlockType)(NSString *name);
  • 方法中的参数
// 推荐使用这种方法,block的定义写在方法声明中,这样看起来比较直观
// 在方法实现的时候能看到里面有什么参数,是什么类型的
- (void)testWithSuccess:(void(^)(NSString *str1, int tt))success;

// 这种方式声明的也没错,但是阅读性不好
// 在方法实现中也不好用
typedef void(^failedBlock)(NSString *str1, int tt);
- (void)testWithFailed:(failedBlock)failed;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 目录 Block概述 Block定义方式 Block保存代码 Block传值 Block对外部变量的传递 Bloc...
    子斌阅读 5,264评论 2 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,073评论 19 139
  • 通过这几天大家的反馈,感觉大家对Block和内存泄漏的呼声很高,本来想这次写runtime在实际项目中的用法,不过...
    键盘风筝阅读 5,828评论 0 16
  • 1.Block代码块的基本使用 Block的作用Block主要用来保存一段代码Block可以封装一段代码,这段代码...
    断剑阅读 4,262评论 1 3
  • 例行科普 Block 是 iOS4 之后添加的一种语法结构,也成为闭包,或者匿名函数,在iOS开发过程中应用较多,...
    CJ_BLUE阅读 4,274评论 0 1

友情链接更多精彩内容