2013-08-16 5 views
1

나는 적어도 일부 패러다임에서 "지연 콜백 (deferred callback)"이라고 말합니다.목표 C의 "지연 콜백"

기본적으로 다른 메서드가 반환 된 후에 메서드를 호출해야합니다. 이런 식으로 뭔가 :

- (void)someMethod:data 
{ 
    [someObject doSomethingAfterCurrentMethodReturns] 
} 
나는 내가 방법 내에서하고 싶은 일을하면 내가 사용해야하는 외부 액세서리를위한 라이브러리가 응용 프로그램 충돌 때문에이 작업을 수행 할 수 있도록하고 싶습니다

. 이는 라이브러리의 문서에 기록되어 있습니다. 현재의 해결 방법은 추가적인 사용자 상호 작용을 포함합니다. 즉, UIAlertView를 던지고 버튼 클릭 뒤에 메서드를 놓습니다.

이 문제를 해결하는 라이브러리를 보았습니다. Objective C에서 이것을 처리 할 수있는 방법이 있습니까?

+0

호출하려는 메소드가 비동기입니까? – serrrgi

+0

"지연 콜백"은 완벽한 라벨이 아닙니다. 따라서 따옴표. – anthropomo

답변

1

매개 변수 수에 따라 방법에 performSelector:withObject:afterDelay:을 사용할 수 있습니다. 또는 NSTimer을 시작하고 발생했을 때 메서드를 호출 할 수 있습니다.

+0

내 잘못 : 내 방법은 논쟁을하지 않습니다. 그리고 이것은 작동하지 않습니다 :'[self performSelector : @selector (myMethod) withObject : Nil afterDelay : 50]' – anthropomo

+0

그리고 신경 쓰지 마라. NSTimeinterval은 밀리 세컨드가 될 것이라고 생각했다. – anthropomo

0

Go의 defer과 비슷한 ObjC에서 defer 문이 생겼습니다. 내 blog postGitHub repo을 참조하십시오.

- (void)someMethod:(id)data 
{ 
    defer(^(){ 
    [someObject doSomethingAfterCurrentMethodReturns]; 
    }); 
    ///... 
}