то голову уже сломал. В общем, есть такой код. Проблем две: функция dequeueReusableCellGood работает как надо, но при этом при ее вызове она требует явно указать параметр cellType, несмотря на то что в определении у него задано значение по умолчанию. Почему компилятор не видит ее значение по умолчанию? Вторая проблема еще веселее: если сделать кастомный класс на базе UICollectionViewCell, допустим, MyCollectionViewCell то при вызове dequeueReusableCellBad<MyCollectionViewCell>(for: indexPath), внутри этой функции reuseIdentifier будет не "MyCollectionViewCell", а "UICollectionViewCell".. ессно, приложение крашится из-за незарегистрированной ячейки. Какого черта это происходит, почему в дженерике виден не тот тип, при том что register работает нормально и register(MyCollectionViewCell) регистрирует что надо - то есть ячейку с ID = "MyCollectionViewCell".
То есть почему при передаче связанного с дженериком типа извне все работает прекрасно (ну почти, не считая не работающего значения по умолчанию), а при получении типа внутри дженерики выводится тип аргумента у функции...
Предупреждаю, что за систематический тэг админа без веской причины прилетит мьют
Понял, спасибо. Уберу упоминание.
короче, я разобрался. Была ошибка в объявлении функции, но компилятор ее пропустил и оно даже работало 🥺 Я объявил дженерик функцию, у которой связанный с дженериком тип отсутствовал в объявлении 🤣 и компилятор каким-то чудом это съел… когда стал разбирать код, пытаясь построить его в плейграунде, компилятор отметил ошибку и тогда я понял что сделал не так. Сейчас все работает.
Обсуждают сегодня