* [ASDisplayNode] Ensure all subclasses are using base class __instanceLock__ and not re-defining their own.
This also moves the @package definition of the instance variable to +FrameworkPrivate instead of Internal.h,
because Internal.h should ideally not be used outside of the ASDisplayNode file setup. This has greatly reduced
the number of imports of Internal.h.
* [ASDisplayNode] Add ASDisplayNode+FrameworkSubclasses.h to share __instanceLock__ definition.
* Improve handling of rasterize node interface states and testing
* Fix harder
* Finish fixes and move rasterization flag into beta header
* Re-enable rasterization in ASDKgram
* Re-enable working test
* Only do it in debug
* Replace fetch data with preload terminology
- Deprecate `-fetchData` and `-clearFetchedData` in favor of `-preload` and `-clearPreloadedData`
- Move `-setNeedsPreload`, `-recursivelyPreload` and `-recursivelyClearPreloadedData` to ASDisplayNode+FrameworkPrivate.h
- Update internal implementation, comments and tests
* Folllow up on #2642:
- Remove -preload and -clearPreloadedData in favor of -didEnterPreloadState and -didExitPreloadState.
- -didEnterPreloadState and -didExitPreloadState call the deprecated -fetchData and -clearFetchedData methods if they are overriden.
* Missed one in a test
* Get rid of behavior change for now.
* Revert more behavior changes, fix tests.
* Don't need these anymore.
* Test & tweak batch fetching implementation
* Tighten the test
* Stop batch fetching at the end of range controller pass
* Clean up the test
* Still check for batch fetching after each frame when scrolling
* Ensure batch fetching happens for empty collection/table
It also fixes a couple subtle bugs:
1. If a range controller update was in flight and you were manually setting the range
mode, you could actually clear out the range mode by calling updateCurrentRangeWithMode:
This is fixed by setting _didUpdateCurrentRange = YES if _needsRangeUpdate is YES.
2. Calling setNeedsUpdate after calling updateCurrentRangeWithMode: can cause the
current range mode to get cleared out. This is because updateCurrentRangeWithMode:
will not set _didUpdateCurrentRange if _currentRangeMode == rangeMode.
instance of ASPINRemoteImageDownloader.
- Revert "Revert "Expose internal singleton method as a class method vs instance method.""
- Fix API bug in ASCollectionNode+Beta
Causing crash: +[ASPINRemoteImageDownloader alternateRepresentationWithData:options:]: unrecognized selector sent to class 0x198e3d8
This reverts commit 91c06272b1.
Be more aggressive with main thread punting
Trampoline setting the dataSource/delegate onto the main thread
Short-circuit the supplementary nodes method if no data source
Don't rely on assertions
Mark variable unused to fix release builds
Handle ASCollectionNode/ASTableNode deallocation better
Add some comments about new macro
ASPINRemoteImageDownloader. This will allow callers to supply their own custom
logic whether that is background downloads, custom http headers, cookie
storage, etc.
* Optimize data controller loading by combining section updates with first set of item updates
* Update call pattern test
* Add some explanation about the approach
* [ASCollectionViewLayoutInspecting] make -scrollableDirections a required method
* doh!
* fixed?
* add assert per @appleguy's comment
* use self.layoutInspector, add check at the start of didChangeBounds...
- Introduce thread-safe ASEventLog
- ASCollectionNode and ASTableNode share their event log with their ASDataController. The controller uses it to log change set submitting and finishing events.
- ASCollectionNode and ASTableNode print their data source and delegate in their debug description.
* Deprecated indexPath methods in ASTableView and ASTableNode and added several indexPath methods to ASTableNode and ASCollectionNode.
* Fixed incorrect doc.
Removed unnecessary __kindof.
* [ASCellNode] Added indexPath property.
* [ASCellNode] Cached the type of scrollView we're using in the node, and placed that logic in setScrollView.
* [ASCellNode] Removed table and collection view from indexPath, since they return the index paths from the view-space.
* Changed the logic for getting indexPath so that it works even when the cell is not displayed.
* [VerticalWithinHorizontalScrolling] Explicitally synthesized indexPath property.