代码之家  ›  专栏  ›  技术社区  ›  Taras Chernyshenko

对于特定项目设置,JTAppleCalendar委托方法为零

  •  0
  • Taras Chernyshenko  · 技术社区  · 6 年前

    我在用 JTAppleCalendar func calendar(_ calendar: JTAppleCalendarView, didSelectDate date: Date, cell: JTAppleCell?, cellState: CellState) 已停止在App Store版本中工作,但它正在当前开发分支中工作。

    经过快速调查,我发现唯一改变的是 FBSDKCoreKit FBSDKLoginKit 可可豆版本- 4.34.0 4.38.1 它解决了一个问题。

    不幸的是,我只能在我的项目(商业项目)中重现这个问题,这个项目有其他库、毒蛇体系结构,而且由于明显的原因,我不能共享它。

    不过,我不认为豆荚会导致这样的问题,所以我正在调查什么会导致这样的问题。几个小时后我发现了 delegate 属于 UICollectionView didSelectItemAt 没有响应。

    我只需在后面加上断点就可以了

    super.dataSource = self
    super.delegate = self
    

    在里面 InternalActionFunctions.swift 文件和 super.delegate nil .

    enter image description here JTAppleCalendarVariables.swift 我发现作者 代表 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 */ }
    }
    

    注释这段代码解决了我的问题, 代表 分配了价值,一切都很完美。

    所以我的问题是,在某些情况下,上面的代码是如何导致这些奇怪的问题的 didSelectItemAt 方法有效,而在其他方法中则不行?或者我走错了路,这不可能是一个原因?

    0 回复  |  直到 6 年前