2017-05-14 10 views
0

UICollectionViewにはインデックスパスの配列を返すメソッドindexPathsForVisibleItemsがあります。 UITableViewには同様のメソッドindexPathsForVisibleRowsがあり、インデックスパスの配列も返しますが、オプションです。なぜApple自体の2つの同様の方法に違いがありますか?コレクションビューとテーブルビューの違い

答えて

1

Appleの開発者は完全ではなく、常に一貫しているとは限らないためです。

UITableViewは、iOS 2.0以降であり、2008年に誰かが、表示可能な行がない場合は、nilを返すことを決めました。

UICollectionViewは、iOS 6.0で後で追加され、可視の行がない場合は誰かがnilの代わりに空の配列を返すことにしました。

もちろんこれはObjective-Cのすべてです。 Swiftが登場したとき、Objective-Cプロパティがnilである可能性があるため、UITableView indexPathsForVisibleRowsはオプションである必要がありました。

BTW - macOSでは、NSCollectionView indexPathsForVisibleItemsはプロパティの代わりに関数であり、配列ではなくセットです。再び、矛盾。

関連する問題