解析消息"警告:正在主线程上执行长时间运行的操作"尽管在后台线程

时间:2015-04-22 09:30:30

标签: ios multithreading swift parse-platform nsoperationqueue

我有一段冗长的代码从Parse下载数据。这是缩短的版本:

func runQuery(query:PFQuery) {

    var backgroundQueue = NSOperationQueue()
    backgroundQueue.addOperationWithBlock(){

    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]?, error: NSError?) -> Void in
        if error == nil {

           // ... some stuff here...

           // the following line produces the parse warning. 
           // file is a PFFile object.

           if let imageData = file.getData() {
               // ...
           }

           // even more stuff here ...
     }
}

我知道PFFile.getData()会阻止正在运行的线程,但这没关系,因为它在NSOperationQueue中运行。所以从我的想法来看,我在后台进行处理。它有效,当我调用runQuery()时,它立即返回并且UI工作。 但为什么我会得到这个警告,我怎么能摆脱它呢? 我不想将PFFile.GetData()调用更改为PFFile.getDataInBackgroundWithBlock(),因为这需要进行大量的代码更改。而且我认为不需要那样。

1 个答案:

答案 0 :(得分:0)

NSOperationQueue()将返回主线程上运行的主操作队列。不在后台线程上。