2014-09-23 38 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

相關問題