В моем ProfileViewController
У меня есть запрос, который извлекает изображение профиля пользователя, которое хранится в виде файла PF.На главном потоке выполняется длительная работа. Swift
var query = PFQuery(className:"Users")
query.whereKeyExists("profilePicture")
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
self.userNameLabel.text = PFUser.currentUser().username
if let imageFile = PFUser.currentUser().objectForKey("profilePicture") as? PFFile {
if let data = imageFile.getData() {
self.profPic.image = UIImage(data: data)
}
}
}
else {
println("User has not profile picture")
}
}
Это единственный запрос в этой точке зрения, у меня есть еще один запрос в моей домашней странице моего приложения, который имеет все сообщения всех пользователей. Ошибка, которую я получаю i s A long-running operation is being executed on the main thread.
Break on warnBlockingOperationOnMainThread() to debug.
Я не знаю, как обойти это, особенно, поскольку мне нужно сделать еще один запрос, чтобы получить текущую публикацию пользователей для профиля. Должен ли я использовать что-то другое, кроме findObjectsInBackgroundWithBlock
. Благодарю.
Вы абсолютно уверены, что это источник неполадки? Нет '... WithContentsOfURL' или' sendSynchronousRequest' задерживается? Ничто другое, что могло бы блокировать основной поток? BTW, Instruments имеет функцию «Запись ожидающих потоков», чтобы помочь выявить эти проблемы. Вы использовали это? – Rob
Я не использовал ни WithContentsOfUrl, ни sendSynchronousRequest, можете ли вы объяснить эту функцию «Инструменты», чтобы я мог ее использовать. @Rob – kareem
См. Раздел «Профилирование времени» в приложении WWDC 2014 [Улучшение вашего приложения с помощью инструментов] (https://developer.apple .com/videos/wwdc/2014 /? id = 418), около 18 минут в видео. Это было рассмотрено и в других годовых видео, но это хорошее место для начала. Но danh определил источник проблемы, поэтому инструменты, вероятно, сейчас не нужны. Но в следующий раз вы можете использовать инструменты, чтобы самостоятельно найти источник проблемы. – Rob