gpt4 book ai didi

objective-c - UICollectionView 由于突出显示问题随机崩溃

转载 作者:太空狗 更新时间:2023-10-30 03:58:48 26 4
gpt4 key购买 nike

我在 iOS7 上有一个 UICollectionView,它在剧烈滚动时会随机崩溃。我启用了僵尸并发现它给我一个错误提示:

*** -[NSIndexPath section]: message sent to deallocated instance 0x17dbc970

我相信这是由于 Apple 错误描述的 here .显然,当有人在快速滚动时突出显示一个单元格时,应用程序会崩溃,然后操作系统会在它移出屏幕时尝试取消突出显示它,当它不再存在时。建议的解决方案是禁用单元格的 userInteractionEnabled 属性,然后使用 UIGestureRecogniser 处理选择。

有没有人遇到过同样的问题?此外,我尝试取消设置 userInteractionEnabled 属性并使用手势识别器,但这似乎不起作用。知道如何解决这个问题吗?

编辑:根据要求添加代码

-(UICollectionViewCell*) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

NSString *CellIdentifier = @"Gallery_Cell";

GalleryCell *cell= (GalleryCell *)[self.flowCollection dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];

if (indexPath.row < self.collectionData.count) {

CellDetails *dets = [self.collectionData objectAtIndex:indexPath.row];

NSURL *mainImageURL = [NSURL URLWithString:dets.imageURL];

cell.image.contentMode = UIViewContentModeScaleAspectFill;
cell.image.clipsToBounds = YES;

if ([[[SDWebImageManager sharedManager] imageCache] imageFromDiskCacheForKey:[self cacheKeyForURL:mainImageURL]] == nil) {

[cell.image setImageWithURL:mainImageURL placeholderImage:nil];

}else{

[cell.image setImage:[[[SDWebImageManager sharedManager] imageCache] imageFromDiskCacheForKey:[self cacheKeyForURL:mainImageURL]]];

}
}

return cell;
}

编辑:更多代码..

我定义了 GalleryCell 以供重用,如下所示:

[self.flowCollection registerNib:[UINib nibWithNibName:@"Thumbs_Cell" bundle:nil] forCellWithReuseIdentifier:@"Gallery_Cell"];

GalleryCell 类实现是:

画廊细胞.h

@interface GalleryCell : UICollectionViewCell

@property (nonatomic, retain) IBOutlet UIImageView *image;

@end

画廊细胞.m

@implementation GalleryCell
@synthesize image;

-(void) setHighlighted:(BOOL)highlighted {
[super setHighlighted:highlighted];
[self setNeedsDisplay];
}

-(void)prepareForReuse {
[super prepareForReuse];
[self.image cancelCurrentImageLoad]; // SDWebImage method to cancel ongoing image load
}

最佳答案

好的。我好像解决了如果有人遇到这个问题,这里是修复:

我在我的 UICollectionViewDelegate 中实现了以下方法:

-(BOOL) collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath{

return NO;
}

这可以防止任何单元格突出显示,从而避免当系统试图在它离开屏幕时取消突出显示时发生崩溃。但是,当您这样做时,它也会停止调用 didSelectItemAtIndexPath 方法。所以我不得不使用 UITapGestureRecogniser 方法来实现单元格选择。

希望这对您有所帮助。

关于objective-c - UICollectionView 由于突出显示问题随机崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453291/

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