2013-06-06 4 views
1

이 시나리오를 고려하십시오.다른 메서드가 Objective C에서 작동 할 때까지 기다릴 메서드를 만드는 방법은 무엇입니까?

-(void) mainMethod 
{ 
    [self subMethod1]; 
    [self subMethod2]; 
} 

내 가정 다음 mainMethod를 호출 할 때

, 그것은 subMethod1 첫째, 다음 subMethod2를 호출합니다. 그러나 "subMethod1 만 완료하면 subMethod2이 호출되어야합니다"라는 규칙은 없습니다. subMethod1에 일부 지연 선 또는 길이가있는 일부 애니메이션을 사용하면 컨트롤이 완료 될 때까지 기다리지 않습니다. 다음 프로세스가 시작됩니다. 따라서 subMethod1이 작업을 완료하기 전에 subMethod2을 호출 할 수 있습니다. 내가 맞습니까?

질문 :

subMethod1이 작업을 완료까지 어떻게, subMethod2 기다려야 만들 수 있습니까?

참고 : 나는 (UIView의 애니메이션은 애니메이션이 발생 후 실행되는 블록이 같은) 당신은 완료 블록을 사용한다 subMethod2

+0

블록으로 보거나 GCD – jcesarmobile

+0

궁금한 점이 있습니까? '[NSOperationQueue mainQueue] performSelector : onShread (subMethod1) onThread : [NSThread mainThread] withObject : self waitUntilDone : YES]; 그리고 다음 줄에서는 정상적으로'subMethod2'를 호출합니다. – matsr

+1

@matsr, 그게 효과가있을 것 같아요, 또한 UI를 차단합니다 완료 블록 또는 GCD를 사용하여 UI를 차단하지 않습니다 – jcesarmobile

답변

5

subMethod1에 배치하고 싶지 않아요.

블록에 익숙하지 않은 사용자는 Apple's Short Practical Guide to Blocks을 참조하십시오.

+1

링크가 끊어져 있습니다. 끝에있는'index' 앞에있는 '_'는 없어야합니다;) 올바른 링크는 다음과 같습니다. http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/index. html;) – HAS

+1

이 수정되었습니다. 감사. –