这是我参与「第四届青训营」笔记创作活动的第7天,今天学习了objective-c的block与闭包机制基础。 我对与闭包的理解是,一个可以从外界捕获变量并对变量进行相关处理的变种函数。 在C++中,闭包的表现形式为lambda表达式,c++对于我来说还是更加熟悉一点的
此闭包 引入了float变量和 unsigned int 变量,并且实现了按照绝对值大小进行排序的结果和目的。
在由C语言进行编写的Python语言当中,闭包的体现形式是内部函数。 在python中定义函数需要 函数 def
此函数引入了整形数字 n,并且最终返回了x与n的multiplier结果。
进入正题,在objectice-c 语言中,闭包以block的形式得以实现,其在接受参数的同时也带有返回值。 与创建的对象不同,block可以被分配在堆上或者栈上,当然他也可以是全局属性的。与此同时已经分配到栈上的代码块也可以被拷贝到堆中。
与objective-c对象一样,block也具备引用计数的定义与实现。
以上为实现OC block的标准格式。 当然,既然被称为标准格式,它也有block的省略写法。
第一种,有返回值也有参数
第二种,为void类型既没有返回值也没有入参
typedef 标记是用来简化block声明与别名的 有一点需要注意的是,因为我们相当于是声明了一种类型,所以block的名字首字母也需要大写