JTAppleCalendar метод делегата ноль для конкретной настройки проекта - PullRequest
0 голосов
/ 14 января 2019

Я использую библиотеку 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 из UICollectionView равен нулю, и поэтому didSelectItemAt не отвечает.

Я проверил это, просто поставив точку останова после

super.dataSource = self
super.delegate = self

в InternalActionFunctions.swift файле и super.delegate было nil.

enter image description here В файле 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 работает, а в других - нет? или, может быть, я нахожусь на неправильном пути, и это вообще не может быть причиной?

...