나는 EXEC_BAD_ACCESS 오류를 해결하기 위해 고심하고 있습니다. 다음 코드는 :EXEC_BAD_ACCESS dispatch_async에서 셀 내용을 채우는 중
// Update the cell
dispatch_async(dispatch_get_main_queue(), {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("customCell", forIndexPath: indexPath) as! CustomCollectionViewCell // crash here
cell.image.image = image
if(collectionView.numberOfItemsInSection(0) > indexPath.row) {
self.collectionView.reloadData()
}
})
코드는 비동기 NSURLSession.dataTaskWithRequest로부터 응답을 수신 한 후 collectionViewCell에 화상을 기입하도록 설계된다.
let cell =
라인에서 충돌이 발생합니다. 왜냐하면 (내가 믿기 때문에) collectionPath의 내용을 변경했기 때문에 indexPath가 더 이상 존재하지 않기 때문입니다. 나는 그것을 확인하는 방법을 잘 모르겠다.
나는 if let cell =
의 라인을 따라 뭔가 일할 것이라고 생각했지만, 나는 그것이 어떻게 작동하는지 잘못 이해했다고 생각한다. 그리고 다른 게시물을 읽는 것으로부터 코드를 try/catch 블록에 넣을 수 없음을 알 수 있습니다.
아이디어가 있으십니까? 미리 많은 감사드립니다!
'cellForRow ...'에서이 작업을 수행하고 있습니까? 당신은 거기서해야만합니다. – tbilopavlovic
예 - 이것은 그것의 작은 부분 일뿐입니다. 아이디어는 행이 표시되고 그 다음에 이미지가 비동기식으로 채워져 스크롤링 등이 부드럽게 진행됩니다. – Ben
그래, 왜 이러는거야?'let cell = ....'? – tbilopavlovic