29 Commits
Author SHA1 Message Date
Scott Goodson 8fa092fb77 Complete overhaul of ASFlowLayoutController.
Introduced ASIndexPath for efficient handling of index paths in C++ vectors,
while maintaining the readability of ".section" and ".row" instead of
".first" and ".second" inside of complicated business logic.

Confirmed that the working range calls are firing appropriately during
ASTableViewStressTest, including the deallocation of the rich text placeholders
provided by ASTextNode.
2015-07-04 20:22:04 -07:00
Scott Goodson 57465c7fd3 Overhaul ASDataController and extensively test ASTableView.
This diff resolves all known consistency issues with ASTableView and ASCollectionView.
It includes significantly more aggressive thrash-testing in ASTableViewStressTest,
which now passes on a variety of device and simulator configurations.  It also updates
the unit tests run on every commit to ensure any regression is caught quickly.

A few of the salient changes in this diff:
- ASTableView now uses Rene's ASCollectionViewLayoutController, and actually uses a
UICollectionViewFlowLayout without any UICollectionView.  This resolves an issue where
ASFlowLayoutController was generating slightly out-of-bounds indicies when programmatically
scrolling past the end of the table content.  Because the custom implementation is likely
faster, I will revisit this later with profiling and possibly returning to the custom impl.
- There is now a second copy of the _nodes array maintained by ASDataController.  It shares
the same node instances, but this does add some overhead to manipulating the arrays. I've
filed a task to follow up with optimization, as there are several great opportunities to
make it faster.  However, I don't believe the overhead is a significant issue, and it does
guarantee correctness in even the toughest app usage scenarios.
- ASDataController no longer supports calling its delegate /before/ edit operations.  No
other class was relying on this behavior, and it would be unusual for an app developer to
use ASDataController directly.  However, it is possible that someone with a custom view
that integrates with ASDataController and ASRangeController could be affected by this.
- Further cleanup of organization, naming, additional comments, reduced code length
wherever possible.  Overall, significantly more accessible to a new reader.
2015-06-28 18:03:45 -07:00
Scott Goodson feba7f8ed1 Update the identifier that AsyncDisplayKit uses to label its internal queues (2/2). 2015-06-27 12:10:58 -07:00
Scott Goodson dc19970fe8 Clean up organization and naming of methods internal to ASDataController. 2015-06-27 11:48:55 -07:00
Scott Goodson 06cfe68cbd Clean up ASDataController for readability & API naming consistency. 2015-06-27 11:06:54 -07:00
Scott Goodson c700618862 Improvements to thread safety during closely spaced edit events.
This applies primarily when beginUpdates / endUpdates is not used.
Due to user interaction-driven edits, like reloads or adding content
at the bottom, sometimes this is unavoidable in app design and thus
critical.

I have a diff in flight to make ASDataController / ASRangeController
robust against very aggressive thrash testing, which will be added
both to the unit test suite and this new example project.
2015-06-21 21:04:09 -07:00
appleguy 079da308ef Merge pull request #437 from eanagel/ASDataController-release-nodes
ASDataController dealloc, ensure cell nodes are not in a superview
2015-05-16 22:49:55 -10:00
Ethan Nagel 38f08c9bd8 support layers as well as views when doing ASDisplayCell cleanup (in case we add support for layer-backed ASDisplayCells in the future.) 2015-05-03 21:45:33 -07:00
Ethan Nagel b40c1dbfc3 on ASDataController dealloc, ensure that loaded Cell nodes are not in the TableViewCell. For reasons I don't fully understand, this avoids a retain cycle with the currently displayed cells. 2015-04-22 13:57:25 -07:00
Ethan Nagel 3f509dbd2f add completion block to reloadData methods 2015-03-26 16:32:44 -07:00
Ryan Nystrom 4fa03a01d1 Functioning Preload range
Refactor how we do ranges so they can be arbitrarily managed. Introduce the concept of a preload range.
2015-02-26 15:41:32 -08:00
Li Tan 88f77e5d52 Fix function call on lock/unlock api 2015-02-25 21:01:59 -08:00
Nadine Salter 2397bd0db6 Merge pull request #325 from facebook/fix_data_fetching
Sort array before data fetching
2015-02-24 11:09:51 -08:00
Li Tan 0e15b061d0 Sort array before data fetching 2015-02-23 20:45:25 -08:00
Li Tan 831aa47ae0 Address comments 2015-02-11 19:15:08 -08:00
Li Tan 6a2c472910 Add asyncDataFetchingEnabled as parameter of initializer of ASTableView & ASCollectionView
Conflicts:
	AsyncDisplayKit/ASCollectionView.mm
	AsyncDisplayKit/Details/ASDataController.mm
2015-02-11 17:24:49 -08:00
Li Tan 2f88ce56a2 Move ASTableView & ASCollectionView data fetching to background thread
Conflicts:
	AsyncDisplayKit/ASCollectionView.mm
	AsyncDisplayKit/Details/ASDataController.mm

Conflicts:
	AsyncDisplayKit/ASCollectionView.mm
	AsyncDisplayKit/Details/ASDataController.mm
2015-02-11 17:22:43 -08:00
Li Tan 25bdd0d84d remove program 2015-02-06 11:44:40 -08:00
andyscott 3eba302b27 Make ASDataController call rowsInSection with the appropriate index 2015-01-23 12:03:52 -08:00
Li Tan 1068fdc413 Fix table view 2015-01-08 16:22:53 -08:00
Li Tan 00e2f46c8d Add batch animation 2015-01-08 16:09:27 -08:00
Li Tan 3adb0b1b93 Batch insertion for reload 2015-01-06 17:43:16 -08:00
Li Tan 13c57020c1 Fix typo in reloadRowsAtIndexPaths 2014-12-26 08:59:01 -08:00
Li Tan e799ed9ea4 fix 2014-12-18 14:00:19 -08:00
Li Tan 3e6436245d fix inserting sections bug 2014-12-18 13:07:43 -08:00
Li Tan a22c4a2761 Another case for deletion 2014-12-16 20:11:31 -08:00
Li Tan ac86cd9523 Fix crash while deleting multiple sections 2014-12-16 20:04:20 -08:00
Li Tan 62248ee0eb Fix crash in reloadData 2014-12-15 22:36:57 -08:00
Li Tan f7f5988fcd Support editing in table view and collection view 2014-12-15 13:19:10 -08:00