导读 大家好,小端来为大家解答以上的问题。块,关于块简介这个很多人还不知道,现在让我们一起来看看吧!1、 块(blocks)是由LLVM提出的类似
大家好,小端来为大家解答以上的问题。块,关于块简介这个很多人还不知道,现在让我们一起来看看吧!
1、 块(blocks)是由LLVM提出的类似于lambda表达式的非标准C语言扩展,亦可以应用于Objective-C与C++中。
2、它的语法类似于这些函数中的闭包,即由大括号包括的语句块。
3、苹果设计块的一个目的是使设计基于Grand Central Dispatch线程结构的程序更容易 ,但块是独立于这一构架的,它也可以在其它程序中以与普通语句块十分相似的方式应用。
4、苹果已经在苹果修改版的GCC编译器以及Clang LLVM编译器前端中实现了这一特性;同时,LLVM计划,包括了支持块特性的运行时库。
5、与函数定义类似,块可以有参数,也可以在其内部声明私有变量。
6、与普通的C函数定义不同,块可以使用其上文中定义的变量。
7、一个块定义会产生一个不透明的值,该值同时包括了块内代码的引用和定义时栈内局部变量的快照(而非调用时)。
8、块可以在定义后被调用,其行为与函数指针相同。
9、块可以如同函数指针一般被赋值到变量中,作为函数的参数传递,但若块需要在其被定义的范围之外被使用时,程序员(或API)需要将该块用特别的运算符(Block_copy)标记。
10、在定义块之后,块内的代码可以在任何时间被调用,语法与调用函数相同。
本文到此分享完毕,希望对大家有所帮助。
标签:
版权声明:本文由用户上传,如有侵权请联系删除!