首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致主线程问题的kingfisher

导致主线程问题的kingfisher
EN

Stack Overflow用户
提问于 2019-12-15 13:50:24
回答 2查看 400关注 0票数 1

所以这个应用程序在测试模式下工作,但是当我去构建发布的时候,我得到了这个主线程的问题。

代码语言:javascript
复制
UIImageView.image must be used from main thread only

根据错误我没有在主线程上调用一些东西,但是它抛出线程错误的那一行是空白的(见截图)

所以我只能猜测他们所说的代码是不是直接在那一行下面?

代码

代码语言:javascript
复制
@objc func nowplaying(){
          let jsonURLString = "https://api.drn1.com.au/station/playing"
                  guard let feedurl = URL(string: jsonURLString) else { return }

                  URLSession.shared.dataTask(with: feedurl) { (data,response,err)
                      in

                      guard let data = data else { return }

                      do{
                          let nowplaying = try JSONDecoder().decode(Nowplayng.self, from: data)

                          nowplaying.data.forEach {

                              DispatchQueue.main.async {


                              self.artist.text = nowplaying.data.first?.track.artist
                              self.song.text = nowplaying.data.first?.track.title

                              }


                              print($0.track.title)

                              if var strUrl = nowplaying.data.first?.track.imageurl {

                                  strUrl = strUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
                                  self.imageurl.kf.setImage(with: URL(string: strUrl), placeholder: nil)

                                //MusicPlayer.shared.nowplaying(artist:  $0.track.artist, song: $0.track.title, cover:strUrl)
                                MusicPlayer.shared.getArtBoard(artist: $0.track.artist, song: $0.track.title, cover:strUrl)
                              }


                         }

我只能猜测这是因为翠鸟想要一个加载图片或其他东西。但是不清楚?

EN

回答 2

Stack Overflow用户

发布于 2019-12-18 06:30:15

在UI线程上调用翠鸟的UI扩展方法的It is your responsibility

之前:

代码语言:javascript
复制
self.imageurl.kf.setImage(with: URL(string: strUrl), placeholder: nil)

之后:

代码语言:javascript
复制
DispatchQueue.main.async {
    self.imageurl.kf.setImage(with: URL(string: strUrl), placeholder: nil)
}
票数 1
EN

Stack Overflow用户

发布于 2019-12-15 14:14:18

我相信你总是可以在你自己的处理器的主线程中运行你的代码,通过使用: king fisher在下载线程上处理图像,所以这可能会导致这个问题

代码语言:javascript
复制
public func process(item: ImageProcessItem, options: KingfisherOptionsInfo) -> Image?
    return DispatchQueue.main.sync {
        let image = ... // Your code needs to be performed in UI thread
        return image
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59341527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档