蓝鸥iOS培训推荐:iOS开发学习中要用到很多语句,很多方式,其中block就是其中的一种,block是引进的对C语言的一种扩展,用来实现匿名函数的特性。那么下面的内容会对你很有帮助的,一定要耐心看完哦!

block能帮助我们组织独立的代码段,除此之外还能提高复用性和可读性。有很多的AppleAPI都使用了block。

那么到底block是啥样的呢?一起来了解一下:

利用^操作符声明一个block变量,意味着一个block的开始

170728593.jpg

在上面这一段程序中将block声明为一个变量,那么就可以把它当做一个函数来用了

170746211.jpg

那么从上面的情况可以看出,一般时候大家都会以内联方式来用block,比如在一个变量中。API不是使用block在一个对象集合上执行某种操作,就是将这一操作作为完成后的回调

170811320.jpg

Block具有将临时函数体创建为表达式的优势。Apple文档中指出:

Block是符合如下要求的匿名内联的代码集:

和函数一样具有一个指定类型的参数列表
有一个可以推导或声明的返回值类型
可以从它被定义的词义范围中捕捉状态
可以在需要的时候改变词义范围的状态
可以和相同的词义范围中定义的其他的Block共享更改的可能。
可以在词义范围(堆栈帧)被销毁后继续共享和修改该词义范围(堆栈帧)的状态。

Block是一个自包含的小代码段,封装了用于遍历(线性遍历)或者回调,除此之外,还能够一起执行的任务单元。


声明和使用Block

那么教了大家应该怎样将一个Block声明为变量,并将其作为一个函数使用:

170939629.jpg

有想法的同学也可以传入一个Block作为一个参数,并不是利用上面的方式去声明它们,这样就可以在需要将block作为参数的时候以内联代码的方式简单地实现

171007699.jpg

从上面这些大家能够看出一个内联的block代码段占据了最后一个参数的地方。Cocoa列出了多个block的使用方法,那么就可以传入block作为方法的参数:

171028899.jpg

终于这一篇写完了,这一章节内容有点多,希望大家能够耐心的看完,会对你帮助很多的。