gpt4 book ai didi

ios - 滚动时 Xcode TableView 滞后

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:15:57 24 4
gpt4 key购买 nike

(void)bilgileriYukle
{
NSMutableArray *yemekIsimleri = [[NSMutableArray alloc] init];
NSMutableArray *resimIsimleri = [[NSMutableArray alloc] init];


NSURL *myURL = [[NSURL alloc]initWithString:@"http://www.sevgilezzeti.com/WebServices/tarifler.php"];
NSData *myData = [[NSData alloc]initWithContentsOfURL:myURL];
if (myData == nil)
{
NSLog(@"INTERNET YOK YADA VERI CEKEMEDI");
}
else
{
NSLog(@"INTERNET VAR VERI CEKILDI");
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:myData options:kNilOptions error:nil];
for (id element in jsonArray)
{
NSString *durum = [element objectForKey:@"durum"];
if([durum isEqualToString:@"1"])
{
[yemekIsimleri addObject:[element objectForKey:@"yemekadi"]];
NSString *gelenYemekAdi =[element objectForKey:@"kapakresmi"];
NSString *imagePathKapak = @"http://sevgilezzeti.com/Admin/yemekresimkapak/";
combined = [NSString stringWithFormat:@"%@%@", imagePathKapak, gelenYemekAdi];
[resimIsimleri addObject:combined];

}

}

}

_TarifAdi=yemekIsimleri;
_ResimAdi=resimIsimleri;

}

////////////////////////////////////////////////////////////////////////////////////

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell" forIndexPath:indexPath];

NSUInteger row = [indexPath row];

cell.TitleLabel.text = _TarifAdi[row];


NSCache *_imageCache;
UIImage *image = [_imageCache objectForKey:@"DenemeRes"];
if (image == nil) {
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:_ResimAdi[row]]];
image = [UIImage imageWithData:data];
[_imageCache setObject:image forKey:@"DenemeRes"];
}


cell.ThumbImage.image = image;

return cell;

}

我可以从 URL 获取图像并可以看到图像,但是当我滚动表格 View 时,它非常缓慢且滞后。我该如何解决这个问题?

最佳答案

在表格 View 单元格中同步加载图像非常简单和直接,但它是邪恶的,因为它会在您滚动时造成延迟,因为它实际上是在您滚动时尝试加载和显示图像。

因此,你必须避免同步加载图片,而是异步加载,使用不同于主线程的线程,这样滚动和加载+显示图片可以独立完成,避免任何延迟。

这可能是一个重复的问题,因为它已经被问过并且那里有教程,但是由于我自己在我的第一个 iOS 应用程序中总是遇到这个问题并且发现它非常困惑,所以我在这里发布答案,希望对您有所帮助。

尝试在你的 中添加这样的东西 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath:

// Get the filename to load.
NSString *imageFilename = [imageArray objectAtIndex:[indexPath row]];
NSString *imagePath = [imageFolder stringByAppendingPathComponent:imageFilename];

[[cell textLabel] setText:imageFilename];

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

dispatch_async(queue, ^{
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

dispatch_sync(dispatch_get_main_queue(), ^{
[[cell imageView] setImage:image];
[cell setNeedsLayout];
});
});

关于ios - 滚动时 Xcode TableView 滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24678736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com