由UICollectionView
的{{1}}组成的我的键盘扩展在超过53MB的RAM后仍然在iOS12上崩溃。
UIImages
在所有单元格上都被调用,无论是否显示
注意:collectionView:willDisplay cell
从未被呼叫
didEndDisplaying
我可以恢复func collectionView(_ collectionView: UICollectionView, willDisplay c: UICollectionViewCell, forItemAt indexPath: IndexPath)
的行为,以便仅在实际显示单元格时调用它吗?
collectionView:willDisplay
答案 0 :(得分:0)
您可能正在调用reloadData()或tableview数据源方法中的某些内容,从而导致无限循环。 setupWithEmojiImage(image: nil)
中的代码是什么?我认为您应该在cellForRow中放置以下内容,而不是willDisplay:
let imageName = String(format:"%@-%@", categories[selectedCategory], NSNumber(value: indexPath.row + 1));
let emojiImage = UIImage(named: imageName)
cell.setupWithEmojiImage(image: emojiImage)
也请避免使用bang运算符(!)强制展开,如果对象不存在,则会导致崩溃。这样做:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let cell: EmojiCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "EmojiCollectionViewCell", for: indexPath) as? EmojiCollectionViewCell {
return cell
}
return UITableViewCell()
}