2

我正在使用 PFFile 来存储图像。如果图像已经下载,我想直接访问它。如果没有,我想使用后台方法。但是,如果我使用getData,我会收到以下警告:

Warning: A long-running operation is being executed on the main thread. 
 Break on warnBlockingOperationOnMainThread() to debug.

因为我知道数据是可用的,所以这个警告是不必要的,并且会弄乱我的日志。有什么方法可以在不触发警告的情况下访问 PFFile 的数据?

4

1 回答 1

3

您收到警告是因为数据在本地不可用,并且 getData 是从服务器获取数据的同步调用。调用 getData 时,它会阻塞主线程 - UI - 并停止所有应用程序交互,直到数据下载,这就是您收到错误的原因。通常,阻止 UI 执行后台操作(例如下载)是非常不受欢迎的。

我会使用isDataAvailablePFFile 的属性来检查数据是否在本地可用。如果不是,请使用getDataInBackgroundWithBlock:在后台获取数据。您可以使用该调用提供的完成方法来更新您的 imageView。

更新 - 您还可以将getData调用包装在一个dispatch_async块中,这会将操作移动到另一个线程,从而将其从主线程中删除并消除警告。

于 2014-12-29T23:21:56.437 回答