我正在使用Parse访问应用程序数据,我的目标是检查用户是否已经应用。
func buttonApplyClicked() {
if (userAlreadyApplied()==false) {
// gather data and register the user
}
}
func userAlreadyApplied() {
// executing on main thread will block
let applicant = parseQueryInstance.getFirstObject()
return applicant != nil
// or
parseQueryInstance.getFirstObjectInBackgroundWithBlock() {
// check data and return result
}
}
因此,如果使用异步调用,我将失去主线程,如果我使用同步调用,则会收到警告,即我执行长操作。
我想它可以在主线程上执行此操作,我也认为它也可以在主线程中执行注册操作,我觉得好吗?
答案 0 :(得分:0)
我想可以在主线程上执行这个[长时间运行]操作
在Cocoa应用程序中永远不会这样。你绝不能阻止主线程。
Cocoa开发通常需要异步操作。您必须处理这样一个事实,即您不会立即获得答案,并且必须在得到答案时进行更新。您还必须处理您的请求可能失败的事实。不能假设网络快速或可用。
答案 1 :(得分:0)
在所有情况下,不建议执行长操作。您应该在另一个线程中执行,然后使用委托模式或完成处理程序再次调用主线程。在此期间,如果操作需要时间并且必须在另一个操作之前完成,则应显示等待消息。