2014-09-23 50 views
0

如果我在NSInvocation上致电invoke,是否与致电performSelector:的参数waitUntilDone:YES相同?也就是说,invoke是否会阻止执行,直到被调用的选择器完成为止?[NSInvocation调用]是否阻塞执行直到完成?

换句话说,以下两条代码行是否完全一样?

// myInvocation is of type NSInvocation 
[myInvocation invoke]; 
[myInvocation performSelectorOnMainThread:@selector(invoke) withObject:nil waitUntilDone:YES]; 

回答

3

[NSInvocation invoke]与调用NSInvocation表示的消息完全相同。像任何消息调用一样,它将在当前线程上执行。

+0

但会阻止执行吗?我在问,因为NSMutableData.writeToFile:'是非阻塞的问题。见例如http://stackoverflow.com/questions/11161079/nsdata-writetofileatomically-doesnt-immediately-save-the-file – nyi 2014-09-23 14:46:43

+2

我说它和普通的方法调用完全一样。普通的方法调用被阻止。调用[someObject doStuff]或创建调用并调用[调用调用]与_exactly_相同。 – gnasher729 2014-09-23 14:51:31

+0

你有一个writeToFile问题:你自己?文档没有提及任何关于非阻塞的内容,所以我认为它是阻塞的。特别是因为对于非阻塞呼叫,必须有一些信息如何找出何时完成,并且没有。仅仅因为有人使用它有问题并不意味着他们是正确的。不阻塞会使该方法无法使用。 – gnasher729 2014-09-23 14:53:41

相关问题