2012-04-23 6 views
1
[self performSelectorOnMainThread:@selector(customFoo:) withObject:obj waitUntilDone:YES]; 

차이가

[self customFoo:obj]; 

내가 아는 한

를 호출, 그 둘 사이에 어떤 차이가없는 ... 그것은이다 권리?

둘 사이의 기본적인 차이점은 무엇입니까?

답변

2

런타임 동작은 동일합니다. 그러나 코드를 컴파일 할 때 차이점이 있습니다 : customFoo: 메서드가 정의 된 경우에만 두 번째 컴파일됩니다.

1

performSelector : 수신기에 지정된 메시지를 보내고 메시지의 결과를 반환합니다.

PerformSelector은 당신이 당신이 특정 작업 (방법) 예를 수행하기위한 다양한 옵션을 선택할 수있는 옵션이 있다는 것을 의미 수행 원하는 백그라운드에서 작업을 수행

– performSelector:withObject:afterDelay: // will execute method after specific delay.. 
– performSelector:withObject:afterDelay:inModes: 
– performSelectorOnMainThread:withObject:waitUntilDone: 
– performSelectorOnMainThread:withObject:waitUntilDone:modes: 
– performSelector:onThread:withObject:waitUntilDone: 
– performSelector:onThread:withObject:waitUntilDone:modes: 

– performSelectorInBackground:withObject: // ... 메소드를 호출하는 데 사용됩니다. 따라서, 귀하의 ManinThread (응용 프로그램) 직접적인 방법 ([self customFoo:obj];)이 작업을 수행하기위한 선택을 제공하지 않습니다

..

For more and detailed explanation visit this reference..

희망이 도움이됩니다 .. responding..like 멀티 스레딩을 멈추지 않을 것입니다 너 ...