* [ASNodeController] initial commit for node controller class
* create <ASInterfaceState> protocol, -[ASDisplayNode interfaceDelegate], and use these to forward to ASNodeController
* rename ASInterfaceStateDelegate, fix setting in it ASNodeController.mm
* [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.
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
* Initial ASLayoutSpecPlayground commit
* Initial exploratory stab at the main challenge of the app - visualizing ASLayoutSpecs
* Halfway through moving debug features out of ASDK framework files and into debug files. Project builds.
* [ASLayoutSpecPlayground] Created new Inspector node, cleaning up internal implementation to start formalizing support for layout spec visualization.
* Workaround for ensuring creation of visualizerNode for ALL layoutspecs
* continued development
* Layout Inspector Work in Progress
* Resizing the playground works in the shrink direction, not for grow.
* added new ASLayoutableInspectorNode features
* Cleaned up examples code.
* Cleaning up code.
* more code cleanup
* [ASLayoutableInspector] Transition to an ASTableNode-based architecture to support larger numbers of buttons / customizable types.
* [ASLayoutableInspector] Support different layoutable property types to set up buttons that can edit all of them.
* Huy debugging
* Refactored layout inspector code for extensibility.
* Properly lock layoutableContextMap
* Fix context handling in ASDisplayNode:measureWithSizeRange
* Fix ASLayoutSpecPlayground:ViewController:toggleVisualization
* added slider to InspectorCell
* [ASLayoutSpecPlayground] Improvements to propagation of visualize mode, resize handle, minor cleanup.
* Fix to ASEnvironment
* [ASLayoutSpecPlayground] Fix a few minor issues from the merge with latest master.
* Implement layout spec cache
* add pager ndoe
* add more examples
* add more layout examples
* [ASLayoutPlayground] Fix merge issues
* [ASLayoutPlayground] Fix up the example project from the 2.0 API changes.
* [ASLayoutPlayground] Some fixes (#2411)
* [ASLayoutPlayground]: Some fixes
* Fixed crash when tapping descender.
* Fixed setting the item to inspect.
* Fixed button states in inspector node.
* Added sliders for spacingBefore, spacingAfter, ascender.
* [ASLayoutSpecPlayground] Deselect the buttons when editing is over.
* [ASLayoutSpecPlayground] Changed flexGrow/Shrink's values from YES/NO to 1.0/0.0
* [Project] Create new Debug/ directory for advanced tools dedicated to debugging.
* [LayoutSpecPlayground] Rename project without AS in title, to be consistent with LayoutSpecExamples.
* [Bulid] Fix Xcode project to use new Debug subdirectory / group.
* [Bulid] Fix a small merge error.
* [Build] Fix build issue for Framework target.
* [Bulid] Fix podspec to expose InspectorNode header; Remove old-cocoapods emojis from ASDKgram :)
* Move aside ASLayoutSpecPlayground-Swift to match master
* [LayoutSpecPlayground] Cleanup implementation in several files, xcodeproj, etc.
* [ASControlNode] Add comment for new assertion, to be enabled in a separate diff.
The previous code used either a `@property` with `assign, nonatomic` semantics, or a `__unsafe_unretained` (non-atomic) ivar pointer to an instance for `asyncdisplaykit_node`.
This commit changes those access so that they have the equivalent of `weak, atomic` semantics.
- `_ASDisplayView.mm`
- Removes the `_node` ivar that was qualified with `__unsafe_unretained`.
- Removes `@synthesize asyncdisplaykit_node = _node;`.
- All direct uses of `_node` were replaced with:
- Creates a strong reference via `ASDisplayNode *node = _asyncdisplaykit_node;`.
- `s/_node/node/`.
- These changes were made even if there's a single use of `_asyncdisplaykit_node` as a consistency / defensive measure so that anyone editing this code in the future does not accidentally use a `weak` reference twice.
- `ASDisplayNode.mm`
- Getters and setters for `asyncdisplaykit_node` were changed from `nonatomic, assign` semantics to the equivalent of `atomic, weak` semantics.
- `weak` semantics were implemented by using a `ASWeakProxy` object.
- `objc_setAssociatedObject` was changed from `OBJC_ASSOCIATION_ASSIGN` to `OBJC_ASSOCIATION_RETAIN` (the `atomic` version of retain).
- `ASDisplayNode+FrameworkPrivate.h`
- Changed the `@property` declarations for `asyncdisplaykit_node` from `nonatomic, assign` to `atomic, weak`.
- The actual getters and setters are implemented in `ASDisplayNode.mm`, which were changed accordingly.
* Perhaps controversially, decomposing ASRangeControllerUpdateRangeProtocol+Beta.h such that the categories on various classes are defined in the classes themselves since that's where the implementation of those categories is provided.
* Updating unit tests and import other headers the tests took for granted. The tests could probably import the umbrella header and not have to worry about this.
* Updating the "Life without Cocoapods" sample to build and run dependent on ASDK as a static library.
* Added a "Life With Frameworks" sample app to build and run dependent on ASDK as a framework, proving the framework targets work.
- Only update range mode if visibility changes if the node is not range controlled
- Only change explicitly set range mode if ASRangeController becomes visible
- Return interface state for range controller in ASCollectionView and ASTableView based on if the containing node is range managed
Before, it was expensive to check this value, even though it was rarely set.
Now the cost is moved to setting the value, and is made very cheap to check with _hierarchyState.