我是Swift的新手,并设置了一个tableView,它从JSON提要中提取数据并将其加载到表中。
表格加载正常,但是当表格中有超过10个单元格时,它变得缓慢而且有些滞后,特别是它到达顶部和底部(我想这是一个单元格被重用的地方)。
有人会非常友好地看看我的代码并解释为什么它可能会这样做吗?我已经实现了SDWebImage,虽然它有所帮助但仍然不理想:
MacBook-Pro:tensorflow $ brew config
HOMEBREW_VERSION: 1.0.6
ORIGIN: https:/
HEAD: 35ee2831086e923e7fcaf75fb440b01312e3f9c5
Last commit: 7 days ago
Core tap ORIGIN: https:/
Core tap HEAD: 80f18defefc814d60d3799e58835cbeffc8e93c8
Core tap last commit: 2 hours ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_REPOSITORY: /usr/local/Homebrew
HOMEBREW_CELLAR: /usr/local/Cellar
HOMEBREW_BOTTLE_DOMAIN: https:/
CPU: quad-core 64-bit broadwell
Homebrew Ruby: 2.0.0-p648
Clang: 8.0 build 800
Git: 2.8.4 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
Java: 1.8.0_60
macOS: 10.12-x86_64
Xcode: 8.0
CLT: 8.0.0.0.1.1472435881
X11: N/A
答案 0 :(得分:1)
我想在你的cellForRowAt
这一行让它变得有点慢
if let data = NSData(contentsOf: url as! URL) {
cell.imgCarNane.sd_setImage(with: (string: url) as URL!)
}
NSData(contentsOf: url as! URL)
让它变得有点慢
只需删除if let
子句,SDWebImage
处理nil url本身,然后编写
cell.imgCarNane.sd_setImage(with: (string: url) as URL!)
因此,您的cellForRowAt
数据源方法现在将变为这样
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: TblCell = self.tableView.dequeueReusableCell(withIdentifier: "cell") as! TblCell
cell.lblCarName.text = tableData[indexPath.row]
let url = NSURL(string: "\(tableImages[indexPath.row])")
cell.imgCarNane.sd_setImage(with: (string: url) as URL!)
cell.pinLabel.text = tablePin[indexPath.row]
if(tableAvailable[indexPath.row] == "Busy"){
cell.onlineIcon.image = UIImage(named: "livefeedofflineicon.png")
}
if (indexPath.row % 2 == 0){
cell.contentView.backgroundColor = UIColor(red: 237/255.0, green: 234/255.0, blue: 234/255.0, alpha: 1.0)
}
return cell
}
我希望能解决滞后问题