Block系列一

前言:block虽然经常用,代码中也随处可见,但是不一定每个人都能够准确定义并使用,所以再看了一篇博客后,手痒 就顺手花几分钟也写了篇总结下,如有雷同,您就凑合着看😝。之后会从底层来总结下block的实现原理以及相关的问题。

1、block作为变量

定义:返回值类型 (^block名)(参数类型)= ^返回值类型(参数){};
示例:

UIImageView * (^testBlok)(UIImageView *) = ^UIImageView *(UIImageView *ima) {
        return [UIImageView new];
    };
testBlok([UIImageView new]);

2、block作为属性

定义:@property (nonatomic,copy) 返回值类型(^block名)(参数类型)
示例:

@property (nonatomic, copy) UIImageView *(^testBlock)(UIImageView *);

使用:

self.testBlock = ^UIImageView *(UIImageView *aa) {
        return [UIImageView new];
    };

3、block作为函数声明的形参

定义:- (void) 函数名:(返回值类型 (^) (参数类型)) {
}
示例:

- (void)testBlockWith:(UIImageView * (^)(UIImageView *imag) )testParamBlock {
    if(testParamBlock) {
        UIImageView *image = nil;
        UIImageView *resultImageView = testParamBlock(image);
    }
}

4、block作为函数实参

定义:[函数名:^返回值类型 (参数) { … }];
示例:

[self testBlockWith:^UIImageView *(UIImageView *imag) {
       
}]

5、使用typedef来定义

typedef 返回值类型(^block名)(参数类型);
使用:block名 xxxx = ^返回值类型(参数){…}

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

相关阅读更多精彩内容

  • 1 Block机制 (Very Good) Block技巧与底层解析 http://www.jianshu.com...
    Kevin_Junbaozi阅读 9,512评论 3 48
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,759评论 0 38
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,553评论 9 118
  • block.png iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实...
    全栈农民工阅读 3,693评论 0 1
  • 我念你不知道我的国籍、省份和街道住址念你不知道我的性别、年龄念你不了解我的过去和将来念你不知我的生命长短,不知我有...
    老歪V阅读 4,249评论 1 2

友情链接更多精彩内容