Blocks
苹果在Mac OS X 10.6 与iOS 4 之后导入Block 语法,之后就大幅改变了撰写Objectice-C 语言的方式。
Block是Cocoa/Cocoa Touch Framework中的匿名函数(Anonymous Functions)的实作。所谓的匿名函数,就是一段具有实例性质的程序代码,这一段程式码可以当做函数执行,另一方面,又可以当做实例传递;因为可以当做实例传递,所以可以让某段程序码变成是某个实例的某个property,或是当做method或是function的参数传递,就是因为这种特性,造成最常使用block的时机,就是拿block实现callback。
在有block 之前,在Cocoa/Cocoa Touch Framework 上要处理callback,最常见的就是使用delegate(此外也可以使用比较具有C 语言风格的方式,传递callback function 的pointer,或是使用target/action pattern)。在iOS 4 有了block 之后,可以看到苹果自己便大幅改写了UIKit 等Framework 的API,把原本使用delegate 处理callback 的地方,都大幅换成了block。