Özel bir UICollectionViewFlowLayout
kullanıyorum bir koleksiyon görünümü var. Bu koleksiyon görünümü görüntüleri yerel olarak veya internet üzerinden yükleyebilir. Görüntüleri yerel olarak yüklerseniz her gezinme işlemi iyi çalışır. Ancak görüntüleri internet üzerinden yüklüyorsam, ekran ilk kez düzgün bir şekilde yüklenir, ancak bir görüntüye dokunup başka bir ekrana gidip ekrandan geri gelirse (hepsi bir navigasyon denetleyicide) 'kötü erişim' kazası. Sebep ne olabileceğini bilen var mı? görüntüler getirilen olmuştur kez fetchImagesFromInternetAsynchronously
yılında EXC_BAD_ACCESS [UICollectionView setCollectionViewLayout:]
[self fetchImagesFromInternetAsynchronously];
self.photosCollectionView.dataSource = self;
self.photosCollectionView.delegate = self;
self.photosCollectionViewFlowLayout = [UICollectionViewFlowLayout new];
self.photosCollectionViewFlowLayout.scrollDirection = UICollectionViewScrollDirectionVertical;
self.photosCollectionViewFlowLayout.minimumInteritemSpacing = 2.0f;
self.photosCollectionViewFlowLayout.minimumLineSpacing = 2.0f;
CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;
CGFloat cellDimension = (screenWidth - 2*self.photosCollectionViewTrailingSpaceConstraint.constant - 3*self.photosCollectionViewFlowLayout.minimumInteritemSpacing)/4 - 1.0;
CGSize cellSize = CGSizeMake(cellDimension, cellDimension);
[self.photosCollectionViewFlowLayout setItemSize:cellSize];
[self.photosCollectionView setCollectionViewLayout:self.photosCollectionViewFlowLayout];
viewWillAppear
yılında viewDidLoad[self.photosCollectionView registerNib:[UINib nibWithNibName:@"PhotoAlbumPhotosCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:kReuseIdentifierPhotosAlbumPhotosCollectionViewCell];
yılında
, ben [self.photosCollectionView reloadData]
yapmak.
stop reason = EXC_BAD_ACCESS (code=1, address=0x8)
frame #0: 0x0000000112da0e09 UIKit`-[UICollectionViewData layoutAttributesForItemAtIndexPath:] + 248
frame #1: 0x0000000112d4f2d3 UIKit`-[UICollectionView _setCollectionViewLayout:animated:isInteractive:completion:] + 1893
frame #2: 0x0000000112d4e86b UIKit`-[UICollectionView setCollectionViewLayout:] + 318
* frame #3: 0x000000010be6b0aa app`-[PhotoAlbumPhotosPickerViewController viewWillAppear:](self=0x00007fd5830d3e00, _cmd="viewWillAppear:", animated=YES) + 1514 at PhotoAlbumPhotosPickerViewController.m:90
frame #4: 0x000000010eec85fd UIKit`-[UIViewController _setViewAppearState:isAnimating:] + 710
frame #5: 0x000000010eec8c98 UIKit`-[UIViewController __viewWillAppear:] + 149
frame #6: 0x000000010eef8a37 UIKit`-[UINavigationController _startCustomTransition:] + 1203
frame #7: 0x000000010ef08cdb UIKit`-[UINavigationController _startDeferredTransitionIfNeeded:] + 712
frame #8: 0x000000010ef09cea UIKit`-[UINavigationController __viewWillLayoutSubviews] + 57
frame #9: 0x000000010f0afc85 UIKit`-[UILayoutContainerView layoutSubviews] + 248
frame #10: 0x000000010ede4e40 UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 710
Bununla ilgili daha fazla kod sağlayabilir misiniz? Özel olarak, görüntülerin internetten alınmasını nasıl sağlayabilirsiniz. \ –
Koleksiyon görünümüne yapılan her çağrı ana iş parçacığında yapılmalıdır. – quellish