メディアプレーヤーの最近の履歴と将来のキューを表すセクションを持つUITableViewを実装しようとしています。これは、操作の性質を表すため、キュータイプの構造が最も適していると思われますが、将来のキュー部分を編集可能にするという要件はいくつかの課題を提起します。編集可能なUITableViewデータソースの実装可能
すべての要素が連続して格納されるベクタータイプの構造ではなく、リンクされたリストがメディア表現を格納するのに最適なオプションになると思います。キュー内のオブジェクトを移動または削除し、最後にオブジェクトを追加する場合、リンクされたリストはベクターよりも効率的です。単純にいくつかのポインタを割り当てると、チャンク全体を移動するよりも軽量に見えるでしょうメモリの。 NSMutableArray
の内部実装の詳細は非常にわかりにくいようですが、私はそれがベクター型であると仮定しています。
しかし、Objective-Cでは本当にリンクリストの実装が実際には見られませんでした。さらに、cellForRowAtIndexPath:
を単にリストを反復するのではなく、特定の行で呼び出すことを要求するUITableViewDataSource
の構造は、特定のインデックスを探すことが高価になる可能性があるため、リンクリストの実装の弱点を露呈させます。 cellForRowAtIndexPath:
が順番に呼び出されるだけの場合は無関係ですが、indexPath
のパラメータを無視してリストを反復するだけで無謀なようです。
これらの構造は通常どのように実装されていますか?提案されたリンクリストを反復しているのは悪い考えですか?
"リンクされたリスト"とはどういう意味ですか?これはObjective-CまたはSwiftの標準データ型ではありません。 –
@WilliamLeGate [リンクリスト](https://en.wikipedia.org/wiki/Linked_list)は、一般的な概念であり、データメモリを横切って広がり、ポインタによって互いに接続されたノードに格納されます。 – Jake