2012-02-07 132 views
0

我的目的如下:我想創建一個延遲調用方法。我可能需要爲此創建一個塊,但我不確定。你能解釋我如何爲此創建一個塊嗎?在Objective-C中使用延遲執行方法

這是代碼:

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

在這種方法我進行購買和購買後已成功完成我想引起我的變量purchase

爲了更清楚:

步驟1:調用buyItem方法。

步驟2:等待購買的響應(我省略用於購買的實際方法)

步驟3:返回StoreKit對象後一個關於購買響應,寫入變量的值purchase

第4步:將值寫入purchase之後,我的方法buyItem完成執行(轉至}並釋放)。

我的問題不是專門針對StoreKit(意思是StoreKit響應方法 - 這僅僅是一個示例)。 purchase變量也是一個例子。對於這個變量,我將使用數據模型,並且在延遲方法執行後它會改變。

謝謝大家!

回答

1

你確實需要一個塊,但可能與你想的不同。你不需要'關閉',你需要一個功能,將阻止,直到它收到來自商店包/服務器的響應。

你可以寫一個普通的buyItem方法,但是在你內部做一個同步調用來存儲工具包,或者如果這是不可能的,你可以使用線程技術來實現你想要的。例如,您可以等待條件變量,然後在商店套件調用返回時發出信號。

對於這兩種情況,您都希望在UI線程以外的線程上執行'buyItem'調用,否則您的UI將凍結。考慮到這個約束(如果你甚至在處理UI),我會說整個方法都沒有意義。相反,您需要啓動商店套件調用,在用戶界面中設置某個指標或微調器或其他內容,然後在商店套件調用返回時,取消調整微調器或其他任何設置。合理?

+0

你好科林!是的,這是個好主意!謝謝你一個很好的完整答案! – 2012-02-07 15:50:01