Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 什么是“NSInvocation”?什么时候使用?_Iphone - Fatal编程技术网

Iphone 什么是“NSInvocation”?什么时候使用?

Iphone 什么是“NSInvocation”?什么时候使用?,iphone,Iphone,什么是NSInvocation?何时以及如何使用它?是消息发送的具体化。换句话说,它是一个表示消息发送的对象 假设您的类Foo有一个名为-[Foo-Foo]的方法,并且有这样一个方法: -(void)doSomething { NSInvocation *inv = [NSInvocation invocationWithMethodSignature: [self methodSignatureForSelector: @selector(foo)]]; [inv setTarget:

什么是
NSInvocation
?何时以及如何使用它?

是消息发送的具体化。换句话说,它是一个表示消息发送的对象

假设您的类Foo有一个名为-[Foo-Foo]的方法,并且有这样一个方法:

-(void)doSomething {
  NSInvocation *inv = [NSInvocation invocationWithMethodSignature: [self methodSignatureForSelector: @selector(foo)]];
  [inv setTarget: self];
  [inv invoke];
}
然后说[自我食物]在功能上与说[自我食物]是一样的


你为什么要这么做?示例应用程序给出了一个想法。另一种可能是计划在将来发送消息,例如由NSTimer触发。

我无法运行CubsPuzzle,[inv invoke]之间的区别是什么;[自福];为什么要使用[inv invoke];从某种意义上说,它们是相同的。从另一个意义上说,它们是截然不同的:您可以选择使用NSInvocation和NSTimer延迟调用,而不是立即向对象发送消息。或者,您可以像在CubePuzzle中一样,选择运行哪个选择器与调用该选择器分开(以提高可读性/可扩展性)。