0
NSInvocation
에 invoke
을 호출하면 waitUntilDone:YES
이라는 인수로 performSelector:
을 호출하는 것과 동일합니까? 즉, 호출 된 선택기가 완료 될 때까지 invoke
이 실행을 차단합니까?[NSInvocation invoke]는 완료 될 때까지 실행을 차단합니까?
즉, 다음 두 코드 줄이 정확히 동일합니까?
// myInvocation is of type NSInvocation
[myInvocation invoke];
[myInvocation performSelectorOnMainThread:@selector(invoke) withObject:nil waitUntilDone:YES];
하지만 실행을 차단합니까? 비 차단 인'NSMutableData.writeToFile :'의 문제로 인해 묻습니다. 예 : http://stackoverflow.com/questions/11161079/nsdata-writetofileatomically-doesnt-immediately-save-the-file – nyi
나는 그것이 보통의 메소드 호출과 정확히 동일하다고 말했다. 일반 메서드 호출이 차단됩니다. [someObject doStuff]를 호출하거나 호출을 생성하고 [invoke invoke]를 호출하는 것은 정확히 일치합니다. – gnasher729
writeToFile에 문제가 있습니까? 문서는 논 블로킹에 대해 전혀 말하지 않기 때문에 그것이 차단되고 있다고 가정합니다. 특히 비 블로킹 호출의 경우 완료 시점을 알아내는 방법에 대한 정보가 필요하고 아무 것도 없다. 누군가 그것을 사용하는 데 문제가 있다고해서 그것이 옳다는 것을 의미하지는 않습니다. nonblocking을 사용하면 해당 메소드를 사용할 수 없게됩니다. – gnasher729