0

我在我的应用程序中使用JTAppleCalendar库。func calendar(_ calendar: JTAppleCalendarView, didSelectDate date: Date, cell: JTAppleCell?, cellState: CellState)一周前,当我停止在 App Store 版本中工作但它在当前的开发分支中工作时,我遇到了一个奇怪的问题。

经过快速研究,我发现唯一改变的是FBSDKCoreKitFBSDKLoginKitcocoapods 版本 - 4.34.0。所以我决定更新他们的版本4.38.1并解决了一个问题。

不幸的是,我只能在具有其他库、VIPER 架构的项目(这是商业项目)中重现此问题,并且出于明显的原因我无法分享它。

但是我不认为豆荚会导致这样的问题,所以我正在尝试调查可能导致此类问题的原因。几个小时后,我发现delegateofUICollectionView为零,这就是为什么didSelectItemAt没有响应。

我只是通过在之后放置断点来检查它

super.dataSource = self
super.delegate = self

InternalActionFunctions.swift文件中并且super.delegatenil.

在此处输入图像描述JTAppleCalendarVariables.swift文件中,我发现作者使用delegatedataSource一个代码将变量设为私有

@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?或者也许我走错了路,这根本不是理由?

4

0 回答 0