* Separate dataSource & UIKit index spaces
Beef up our supplementary node support
Make the API way better
Go nuts
Add a unit test for UICollectionView's handling of reloadData inside batch updates
Wrap indexPathForNode: in a cache
Convert index paths in delegate methods
Go back on table view
Put collection view back
Switch up the API
Move most ASCollectionView API to ASCollectionNode
Move most table logic over to ASTableNode
Do the things
More conversion work
Keep on keepin' on
Get table view delegate API done
More porting
Simplify
Clear the delegate
More cleanup
Move more stuff around
Remove pointless file
Re-add some API
Put back more API
Use the right flag
* Some cleanup
* Remove incorrect comment
* Tweak the API
* Put back a couple methods
* update example projects (note: ASCollectionView deprecation warnings expected)
* change reloadDataWithCompletion:nil --> reloadData
* Clean up rebase
* Make deprecated numberOfItemsInSection methods optional
* Use the right flag
* Address nits
* update ASDKTube, ASDKgram & ASViewController examples
Introduce `ASTableView`, a UITableView subclass that uses `ASCellNode`
instead of UITableViewCell. Add working range support via
`ASRangeController`, which observes the visible range, maintains a
working range, and handles most ASDK machinery. ASRangeController is
loosely-enough coupled that it should be easily adapted to
UICollectionView if that's desired in the future.
Notable considerations in the ASRangeController architecture:
* There's no sense rewriting UITableView -- the real win comes from
using nodes instead of UITableViewCells (easily parallelisable
computation, large number of cells vs. few table views, etc.). So,
use a UITableView with empty cells, using UITableViewCell's
contentView as a host for arbitrary node hierarchies.
* Instead of lazy-loading cells the instant they're needed by
UITableView, load them in advance. Preload a substantial number of
nodes in the direction of scroll, as well as a small buffer in the
other direction.
* Maintain compatibility with UITableView's API, with one primary change
-- consumer code yields configured ASCellNodes, not UITableViewCells.
* Don't use -tableView:heightForRowAtIndexPath:. Nodes already compute
their preferred sizes and cache results for use at layout-time, so
ASTableView uses their calculatedSizes directly.
* Corollary: ASTableView is only aware of nodes that have been sized.
This means that, if a cell appears onscreen, it has layout data and
can display a "realistic placeholder", e.g. by making its subnodes'
background colour grey.
Other improvements:
* Remove dead references and update headers (fixes#7, #20).
* Rename `-[ASDisplayNode sizeToFit:]` to `-measure:` and fix
`constrainedSizeForCalulatedSize` typo (fixes#15).
* Rename `-willAppear` and `-didDisappear` to `-willEnterHierarchy` and
`-didExitHierarchy`. Remove `-willDisappear` -- it was redundant, and
there was no counterpart `-didAppear`.
* Rename `viewLoaded` to `nodeLoaded`.