我正在使用PFFile来存储图像。如果图像已经下载,我想直接访问它。如果没有,我想使用背景方法。但是,如果我使用getData
,我会收到以下警告:
Warning: A long-running operation is being executed on the main thread.
Break on warnBlockingOperationOnMainThread() to debug.
由于我知道数据可用,因此不需要此警告并使我的日志变得混乱。有没有办法在不触发警告的情况下访问PFFile的数据?
答案 0 :(得分:3)
您收到警告,因为本地的数据不,而getData是从服务器获取数据的同步调用。当调用getData时,它会阻塞主线程 - UI - 并停止所有应用程序交互,直到数据下载,这就是您收到错误的原因。通常,阻止用户界面执行后台操作(例如下载),非常不赞成。
我会使用PFFile的isDataAvailable
属性来检查数据是否在本地可用。如果不是,请使用getDataInBackgroundWithBlock:
在后台获取数据。您可以使用该调用提供的完成方法来更新imageView。
UPDATE - 您还可以将getData
调用包装在dispatch_async
块中,这会将操作移动到另一个线程,从而将其从主线程中删除并删除警告。