我的目的如下:我想创建一个延迟调用方法。我可能需要为此创建一个块,但我不确定。你能给我解释一下如何为这个创建一个块吗?
代码如下:
- (IBAction)buyItem:(id)sender {
BOOL purchase = ... /*call purchase method use block*/
}在此方法中,我进行了一次购买,在成功完成购买之后,我希望在我的变量purchase中获得结果。
更清楚地说:
步骤1:调用buyItem方法。
步骤2:等待购买的响应(我省略了购买的实际方法)
步骤3:在StoreKit对象返回关于购买的响应后,在变量purchase中写入值。
步骤4:将值写入purchase后,我的方法buyItem完成执行(转到}并发布)。
我的问题不是关于StoreKit的(意思是StoreKit响应方法--这只是一个例子)。purchase变量也是一个例子。对于这个变量,我将使用一个数据模型,它将在延迟方法执行后更改。
谢谢大家!
发布于 2012-02-07 23:05:45
您确实需要一个块,但可能是您正在考虑的不同类型。您不需要“闭包”,您需要一个函数,该函数将阻塞,直到收到来自存储工具包/服务器的响应。
您可以只编写一个普通的buyItem方法,但是在内部您可以同步调用存储工具包,或者如果这不可能,您可以使用线程技术来实现您想要的结果。例如,您可以等待一个条件变量,然后在store kit调用返回时发出信号通知它。
对于这两种情况,您都需要在UI线程以外的线程上执行“buyItem”调用,否则您的UI将冻结。考虑到这种限制(如果您甚至正在处理UI),我会说这种整个方法没有意义。相反,您需要启动store kit调用,在UI中设置一些指示器或微调器或其他东西,然后当store kit调用返回时,取消设置微调器或其他任何东西。讲得通?
https://stackoverflow.com/questions/9175575
复制相似问题