NSInvocation和block之间有什么区别?

hol*_*ety 5 objective-c nsinvocation objective-c-blocks

当我说阻止我的意思是:

^(int a) {return a*a;};
Run Code Online (Sandbox Code Playgroud)

此外,块仅支持iOS4及更高版本.

这两者有什么区别?

jus*_*tin 4

AnNSInvocation是发送给对象的消息(使用选择器),带有可选参数,可以稍后(或现在)执行,并且在当前上下文之外(当然要注意复制的内容与移动时保留或引用的内容)。NSInvocation这样做的好处是您可以有选择地复制/引用您所需要的内容。

该块是一个秘密的本地函数定义,它能够捕获当前线程上下文的部分或全部。它也比 an 更容易配置,NSInvocation因为它自动捕获、复制和保留线程(或作用域)本地上下文。与函数类似,块可以稍微增加二进制大小。如果从本地上下文中取出(例如,当您复制块时),与NSInvocation.