|  |      1lldong      2012-02-27 19:42:42 +08:00 Objective-C是通过发送消息进行方法调用的,我的理解是: NSInvocation对象是对一个消息的封装,包括消息的target,名称(selector),签名等,但是它本身不包含方法的实现代码,实现在target那里。 而Block其实就是匿名函数,可以包含具体的实现代码,而且具有闭包的特性,可以捕获其所在环境中的状态。参考: http://lldong.github.com/blog/2011/12/30/blocks/ | 
|  |      2wtl      2012-02-27 19:58:36 +08:00 这两者差别还是满大的 [invocation invoke]与[target action:parameter]是等价的 block最重要的是它维护了创建时的上下文,并可以修改其中的变量, 虽然长的像功能也像普通函数,但又可以被当做对象传递,这就有了无数可能: a.hello(); b = a.hello; b.hello(); 太灵活了...... | 
|  |      3wtl      2012-02-27 19:59:49 +08:00 笔误 a.hello(); b.hello = a.hello; b.hello(); | 
|  |      4holsety OP 我的理解是闭包和函数对象的区别。 虽然都是做同一件事情的。 |