我在我的应用程序中使用JTAppleCalendar库。func calendar(_ calendar: JTAppleCalendarView, didSelectDate date: Date, cell: JTAppleCell?, cellState: CellState)
一周前,当我停止在 App Store 版本中工作但它在当前的开发分支中工作时,我遇到了一个奇怪的问题。
经过快速研究,我发现唯一改变的是FBSDKCoreKit
和FBSDKLoginKit
cocoapods 版本 - 4.34.0
。所以我决定更新他们的版本4.38.1
并解决了一个问题。
不幸的是,我只能在具有其他库、VIPER 架构的项目(这是商业项目)中重现此问题,并且出于明显的原因我无法分享它。
但是我不认为豆荚会导致这样的问题,所以我正在尝试调查可能导致此类问题的原因。几个小时后,我发现delegate
ofUICollectionView
为零,这就是为什么didSelectItemAt
没有响应。
我只是通过在之后放置断点来检查它
super.dataSource = self
super.delegate = self
在InternalActionFunctions.swift
文件中并且super.delegate
是nil
.
在JTAppleCalendarVariables.swift
文件中,我发现作者使用delegate
下dataSource
一个代码将变量设为私有
@available(*, unavailable)
/// Will not be used by subclasses
open override var delegate: UICollectionViewDelegate? {
get { return super.delegate }
set { /* Do nothing */ }
}
@available(*, unavailable)
/// Will not be used by subclasses
open override var dataSource: UICollectionViewDataSource? {
get { return super.dataSource }
set {/* Do nothing */ }
}
评论此代码解决了我的问题,delegate
分配了价值并且一切正常。
所以我的问题是,在某些情况下方法有效而在其他情况下无效时,上述代码如何导致如此奇怪的问题didSelectItemAt
?或者也许我走错了路,这根本不是理由?