在iOS 9中调用invalidateLayout方法时应用程序崩溃
我想每分钟更新在iOS 9中调用invalidateLayout方法时应用程序崩溃,ios,swift,uicollectionview,Ios,Swift,Uicollectionview,我想每分钟更新UICollectionViewlayout。它在iOS 10中运行良好,但在iOS 9中崩溃(我在iPad2中进行了测试) invalidateLayout方法使UICollectionView更新。调用此方法时会崩溃 override init() { super.init() initializeMinuteTick() } required init?(coder aDecoder: NSCoder) {
UICollectionView
layout。它在iOS 10中运行良好,但在iOS 9中崩溃(我在iPad2中进行了测试)invalidateLayout
方法使UICollectionView
更新。调用此方法时会崩溃
override init() {
super.init()
initializeMinuteTick()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
deinit {
minuteTimer?.invalidate()
}
private func initializeMinuteTick() {
guard let validDate = Date().addMinute(num: 1) else { return }
minuteTimer = Timer(fireAt: validDate, interval: TimeInterval(60), target: self, selector: #selector(minuteTick), userInfo: nil, repeats: true)
if let minuteTimer = minuteTimer {
RunLoop.current.add(minuteTimer, forMode: .defaultRunLoopMode)
}
}
func minuteTick() {
cachedCurrentTimeComponents.removeAll()
// CRASH ----------------
invalidateLayout()
// CRASH ----------------
}
错误:
线程1:EXC\u错误访问
尝试在
collectionView
上调用reloadData()
。在调用重新加载函数之前,还要确保collectionView
的dataSource
已经填充了数据(可能存在强制展开值的位置?)。尝试在collectionView
上调用reloadData()
。在调用重新加载函数之前,还要确保collectionView
的dataSource
已经填充了数据(可能存在强制展开值的位置?)。如果它崩溃,那么您是否可以包含错误消息?还有使它崩溃的函数体?@mag_zbc谢谢。我添加了它。invalidateLayout
?这到底是什么类,它是您的视图控制器还是UICollectionViewLayout
子类?您几乎没有为任何人提供任何帮助,您至少需要付出最小的努力。@mag_zbc谢谢,这是UICollectionViewLayout方法之一。如果它崩溃,您是否可以包含错误消息?还有使它崩溃的函数体?@mag_zbc谢谢。我添加了它。invalidateLayout
?这到底是什么类,它是您的视图控制器还是UICollectionViewLayout
子类?您几乎没有为任何人提供任何帮助,您至少需要付出最小的努力。@mag_zbc谢谢,这是UICollectionViewLayout方法之一。谢谢。当我调用“collectionView?.reloadData()”时,它在重新加载行崩溃。但是如果dataSource还没有准备好,为什么它可以在iOS 10中工作呢?谢谢。当我调用“collectionView?.reloadData()”时,它在重新加载行崩溃。但如果数据源还没有准备好,为什么它可以在iOS 10中工作?