2012-02-07 3 views
0

그 목적은 다음과 같습니다. 지연 호출 메서드를 만들고 싶습니다. 이를 위해 블록을 만들어야 할 수도 있지만 확실하지 않습니다. 이 블록을 만드는 방법을 설명해 주시겠습니까? Objective-C에서 지연 실행 메서드 사용

코드입니다 :

- (IBAction)buyItem:(id)sender { 
    BOOL purchase = ... /*call purchase method use block*/ 
} 

내가 구매를이 방법과 구매가 성공적으로 완료된 후 내 변수 purchase 결과 싶어.

더 명확하게하려면 :

단계 1 : buyItem 메서드를 호출합니다.

2 단계 : 변수에 값을 구입에 대한 응답을 반환 쓰기 StoreKit 객체 후 : 구매에 대한 응답을 기다리는

3 단계 (I는 구매를위한 실제 방법을 생략 한) purchase.

4 단계 : purchase로 실행을 완료 buyItem 내 방법을 값을 작성 후합니다 (} 및 해제로 이동).

제 질문은 StoreKit에 대한 구체적 내용이 아닙니다. StoreKit 응답 방법을 의미합니다. 이것은 예일뿐입니다. purchase 변수도 예제입니다. 이 변수에 대해서는 데이터 모델을 사용할 것이고 지연된 메소드가 실행 된 후에 변경 될 것입니다.

감사합니다.

답변

1

차단이 필요하지만 생각보다 다른 종류 일 수 있습니다. '클로저'가 필요하지 않은 경우 저장소 키트/서버에서 응답을받을 때까지 차단되는 기능이 필요합니다.

정상적인 buyItem 메소드를 작성할 수는 있지만 내부적으로 키트 저장에 대한 동기 호출을 작성하거나 가능하지 않은 경우 스레딩 기술을 사용하여 원하는 것을 얻을 수 있습니다. 예를 들어, 조건 변수를 기다린 다음 저장소 키트 호출이 반환 될 때 신호를 보낼 수 있습니다.

두 경우 모두 UI 스레드가 아닌 다른 스레드에서 'buyItem'호출을 수행해야합니다. 그렇지 않으면 UI가 중단됩니다. 이러한 제약을 감안할 때 (UI를 다루는 사람이라면),이 전체 접근 방식이 의미가 없다고 말할 수 있습니다. 대신 상점 킷 통화를 시작하고 UI에서 일부 표시기 또는 회 전자 또는 기타 항목을 설정 한 다음 상점 키트 호출이 반환되면 회 전자 등을 설정 해제해야합니다. 이해가 되니?

+0

Hello Colin! 네, 좋은 생각입니다! 좋은 답변을 해주셔서 감사합니다! –