Junior — Middle
Projeye yapılan teknik bir iyileştirme örneği paylaşabilir misiniz ve uygulamasını anlatabilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir iOS projemde, liste (UITableView) içindeki resimlerin yüklenme performansını önbellekleme ve asenkron yükleme uygulayarak artırdım.
Uygulama:
NSCachekullanarak zaten yüklenmiş resimleri sakladım, böylece onları tekrar ağdan yüklemekten kaçındım.cellForRowAtmetodunda, resmin önbellekte olup olmadığını kontrol ettim; varsa hemen gösterdim.- Yoksa, URLSession aracılığıyla asenkron yükleme başlattım, yükleme tamamlandıktan sonra resmi önbelleğe kaydettim ve hücreyi güncelledim.
Kod örneği:
let imageCache = NSCache<NSString, UIImage>()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let urlString = imageURLs[indexPath.row]
if let cachedImage = imageCache.object(forKey: urlString as NSString) {
cell.imageView?.image = cachedImage
} else {
cell.imageView?.image = nil
DispatchQueue.global().async {
if let url = URL(string: urlString),
let data = try? Data(contentsOf: url),
let image = UIImage(data: data) {
self.imageCache.setObject(image, forKey: urlString as NSString)
DispatchQueue.main.async {
if let updateCell = tableView.cellForRow(at: indexPath) {
updateCell.imageView?.image = image
updateCell.setNeedsLayout()
}
}
}
}
}
return cell
}
Bu, ağ üzerindeki yükü önemli ölçüde azalttı ve kaydırma akışkanlığını artırdı.