今までTableViewCellに入れ子でCollectionViewCellが入る場合があった時、
CollectionViewのDelegate、DataSourceメソッドをViewController側に任せるために
TableViewCell内に
.swift
@IBOutlet weak var collectionView: UICollectionView!
// ~~~中略~~~
func set<T: protocol<UICollectionViewDelegate, UICollectionViewDataSource>>(collectionDataSourceDelegate: T) {
collectionView.delegate = collectionDataSourceDelegate
collectionView.dataSource = collectionDataSourceDelegate
}
このように記述し、ViewController内でセットしていました。
しかし、イツノマニカこのメソッドに対して
'protocol<...>' composition syntax is deprecated; join the protocols using '&'
とwarningが表示されるようになっていたので調べてみました。
すると、どうやらこれに記述されていて、
.swift
func set<T: UICollectionViewDelegate & UICollectionViewDataSource>(collectionDataSourceDelegate: T) {
collectionView.delegate = collectionDataSourceDelegate
collectionView.dataSource = collectionDataSourceDelegate
}
これで回避することができました