首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Objective-C中使用延迟执行方法

在Objective-C中使用延迟执行方法
EN

Stack Overflow用户
提问于 2012-02-07 19:38:58
回答 1查看 736关注 0票数 0

我的目的如下:我想创建一个延迟调用方法。我可能需要为此创建一个块,但我不确定。你能给我解释一下如何为这个创建一个块吗?

代码如下:

代码语言:javascript
复制
- (IBAction)buyItem:(id)sender {
    BOOL purchase = ... /*call purchase method use block*/
}

在此方法中,我进行了一次购买,在成功完成购买之后,我希望在我的变量purchase中获得结果。

更清楚地说:

步骤1:调用buyItem方法。

步骤2:等待购买的响应(我省略了购买的实际方法)

步骤3:在StoreKit对象返回关于购买的响应后,在变量purchase中写入值。

步骤4:将值写入purchase后,我的方法buyItem完成执行(转到}并发布)。

我的问题不是关于StoreKit的(意思是StoreKit响应方法--这只是一个例子)。purchase变量也是一个例子。对于这个变量,我将使用一个数据模型,它将在延迟方法执行后更改。

谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-07 23:05:45

您确实需要一个块,但可能是您正在考虑的不同类型。您不需要“闭包”,您需要一个函数,该函数将阻塞,直到收到来自存储工具包/服务器的响应。

您可以只编写一个普通的buyItem方法,但是在内部您可以同步调用存储工具包,或者如果这不可能,您可以使用线程技术来实现您想要的结果。例如,您可以等待一个条件变量,然后在store kit调用返回时发出信号通知它。

对于这两种情况,您都需要在UI线程以外的线程上执行“buyItem”调用,否则您的UI将冻结。考虑到这种限制(如果您甚至正在处理UI),我会说这种整个方法没有意义。相反,您需要启动store kit调用,在UI中设置一些指示器或微调器或其他东西,然后当store kit调用返回时,取消设置微调器或其他任何东西。讲得通?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9175575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档