Junior — Middle
Жобада жасалган техникалык жакшыртуунун мисалын бөлүшө аласызбы жана анын ишке ашырылышын сүрөттөп берсеңиз?
sobes.tech AI
AIден жооп
Менин iOS долбоорлорумдун биринде, сүрөттөрдү жүктөө ылдамдыгын жакшыртуу үчүн кэш жана асинхрон жүктөөнү колдонуп жатам.
Иштөө:
NSCacheколдонуп, алдын ала жүктөлгөн сүрөттөрдү сактап калдым, ошондуктан алардын кайрадан тармактан жүктөлүшүн алдын алдым.cellForRowAtметодунда сүрөт кэште бар-жогун текшерип, эгер бар болсо, дароо көрсөттүм.- Эгер жок болсо, URLSession аркылуу асинхрон жүктөөнү баштап, жүктөлгөндөн кийин сүрөттү кэшке сактап, клетканы жаңырттым.
Коддун мисалы:
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
}
Бул ыкма тармак жүктөмүн кыйла азайтып, сүрөттөө ылдамдыгын жакшыртат.