该应用有时会与[NSObject(NSObject) doesNotRecognizeSelector:]
崩溃,选择器为[UIImageView setImage:]
。
我通过设置异常断点来捕获它,并且在UIImageView.image
的{{1}}中设置prepareForReuse
时发生了崩溃:
UICollectionViewCell
调用class MyCell: UICollectionViewCell {
var coverImageView = UIImageView()
...
override func prepareForReuse() {
super.prepareForReuse()
coverImageView.image = nil
}
}
,然后实例化单元格:
prepareForReuse
为什么会这样?
另外我无法加载func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = myCollectionView.dequeueReusableCell(withReuseIdentifier: "myReuseID", for: indexPath) as! MyCell
...
}
的快速查看数据视图,所以可能该对象已被释放?
控制台中的错误消息是:
UIImageView
答案 0 :(得分:1)
我认为问题在于您没有调用UIImageView
的指定初始化程序,因此其image
属性未正确初始化并尝试分配给它崩溃应用程序:
- [ NSMallocBlock size]:无法识别的选择器发送到实例0x608000880aa0
该方法尝试在旧图像上调用size
方法,但旧图像设置为某个随机存储器地址。
要解决此问题,请使用指定的初始化程序正确初始化UIImageView
:
var coverImageView = UIImageView(image: nil)