2015-06-02 44 views
0

我正在使用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

我猜它好吗主线程

这是从来没有在一个Cocoa程序真正上执行该[长时间运行]操作。你绝不能阻止主线程。

可可开发通常需要异步操作。你必须处理这样一个事实,即你不会立即得到答案,并且在你有答案时必须更新。您还必须处理您的请求可能失败的事实。网络不能被认为是快速的或可用的。

0

在所有情况下,不推荐执行长操作。您应该在另一个线程中执行,然后使用委托模式或完成处理程序再次调用主线程。在此期间,如果操作需要时间并且必须在另一个操作之前完成,则应显示一条等待消息。

相关问题