为什么应用程序崩溃[NSObject(NSObject)doesNotRecognizeSelector:]?

时间:2017-01-21 14:32:20

标签: swift uiimageview uicollectionview uicollectionviewcell prepareforreuse

该应用有时会与[NSObject(NSObject) doesNotRecognizeSelector:]崩溃,选择器为[UIImageView setImage:]

enter image description here

我通过设置异常断点来捕获它,并且在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 ... } 的快速查看数据视图,所以可能该对象已被释放?

enter image description here

控制台中的错误消息是:

UIImageView

1 个答案:

答案 0 :(得分:1)

我认为问题在于您没有调用UIImageView的指定初始化程序,因此其image属性未正确初始化并尝试分配给它崩溃应用程序:

  

- [ NSMallocBlock size]:无法识别的选择器发送到实例0x608000880aa0

该方法尝试在旧图像上调用size方法,但旧图像设置为某个随机存储器地址。

要解决此问题,请使用指定的初始化程序正确初始化UIImageView

var coverImageView = UIImageView(image: nil)