私は抽象クラスをエミュレートする最も良い方法であるプロトコルとプロトコル拡張について知っていますが、私がやりたいことは実際の抽象クラスを必要とします。Swiftの抽象クラス
私はBaseCollectionViewCell
とBaseCollectionViewSource
が一緒に働きたいです。 BaseCollectionViewSource
のサブクラスに配列を渡し、再利用識別子を返すメソッドを実装します。セルはBaseCollectionViewSource
によってインスタンス化され、コンクリートcollectionViewCellでオーバーライドされるメソッドsetData
があります。私は実質的に何をしたいのか
はこれです:
abstract class WRBaseCollectionViewCell: UICollectionViewCell {
abstract func setData(_ data: AnyObject)
}
しかし、私はスウィフト(と思う)でこれをエミュレートすることはできません。プロトコルはクラスから継承することはできません。動的ディスパッチはありません。これにより、すべてが上書き可能であるという私の考えが破棄されます。
これを行う方法を知っている人はいますか?おそらく工場?私はこれを新しいcollectionViewを実装するためにできるだけ簡単にしたいと思います。
Swiftには抽象クラスがありません。 IMOには必要ありません。ジェネリックスとプロトコル、特に*プロトコル拡張*を使用すると、迅速なツールセットが提供されます。 – vikingosegundo
@vikingosegundoあなたは私の問題に具体的な解決策を持っていますか?言語を変更するよう求めているわけではありません。可能な限り最適に実装したいと思います。 – vrwim
あなたの特定の例のために:私は最近開始したプロジェクトを見ているかもしれません:[TaCoPopulator](https://github.com/vikingosegundo/TaCoPopulator)、コレクションとテーブルビューのためのデータソースフレームワーク。 – vikingosegundo