[NSInvocation调用]是否阻塞执行直到完成?
问题描述:
如果我在NSInvocation
上致电invoke
,是否与致电performSelector:
的参数waitUntilDone:YES
相同?也就是说,invoke
是否会阻止执行,直到被调用的选择器完成为止?[NSInvocation调用]是否阻塞执行直到完成?
换句话说,以下两条代码行是否完全一样?
// myInvocation is of type NSInvocation
[myInvocation invoke];
[myInvocation performSelectorOnMainThread:@selector(invoke) withObject:nil waitUntilDone:YES];
答
[NSInvocation invoke]与调用NSInvocation表示的消息完全相同。像任何消息调用一样,它将在当前线程上执行。
但会阻止执行吗?我在问,因为NSMutableData.writeToFile:'是非阻塞的问题。见例如http://stackoverflow.com/questions/11161079/nsdata-writetofileatomically-doesnt-immediately-save-the-file – nyi 2014-09-23 14:46:43
我说它和普通的方法调用完全一样。普通的方法调用被阻止。调用[someObject doStuff]或创建调用并调用[调用调用]与_exactly_相同。 – gnasher729 2014-09-23 14:51:31
你有一个writeToFile问题:你自己?文档没有提及任何关于非阻塞的内容,所以我认为它是阻塞的。特别是因为对于非阻塞呼叫,必须有一些信息如何找出何时完成,并且没有。仅仅因为有人使用它有问题并不意味着他们是正确的。不阻塞会使该方法无法使用。 – gnasher729 2014-09-23 14:53:41