In this case, the user hasn't specified enough about the layout of a node. We default to
0, 0 - but ideally the case should not occur at all. So it's important to help developers
detect these cases and fix them quickly.
An assertion causes developers several problems:
- They can't see important information unless an exception breakpoint is manually added.
- They can't see their layout onscreen and so visually understanding the problem is impossible.
- They can't proceed with testing to trigger other faults in the layout and are blocked fixing one at a time.
A log fixes every one of those problems:
- They can set a breakpoint on the log line very easily if desired.
- They can see their layout display and recognize the 0,0 node even more quickly than the log text information.
- They can see if multiple logs print out, or if the log only occurs for one item in a feed, or certain types --
This helps them debug faster by knowing if the layout is always broken or certain conditions break it.
Since developing with ASLayoutSpecs is an iterative process, it's crucial that we let developers have the
freedom to experiment and test without hitting too many assertions. Fortunately it will be impossible to ignore
these huge logs (full recursive description) and their nodes will be 0, 0 size, so they will get fixed.
ASPINRemoteImageDownloader. This will allow callers to supply their own custom
logic whether that is background downloads, custom http headers, cookie
storage, etc.
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
* [ASVideoNode] Addition of reset method to allow video node to return to initial state of placeholder and play button
* Implemented pull request review comments for code style
* [ASCollectionViewLayoutInspecting] make -scrollableDirections a required method
* doh!
* fixed?
* add assert per @appleguy's comment
* use self.layoutInspector, add check at the start of didChangeBounds...
* 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.
- 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.
* Deprecations should be re-enabled. If there are specific deprecations we'd like to hold off on, we should address those specifically.
* Fix decleration
* Move select to undeprecated
* Fix deprecations
This reverts commit 1165628905.
I wanted to catch dimension issues early, we should move the assert to setting
width and height. The former was correct for here.
* Initial commit for ASStackLayoutSpec improvements
* Remove the lock in ASStackLayoutSpec and make the ASStackLayoutSpecStyle const
I think we don't need lock here as the style already has a lock while we set the value
* Add ASStackLayoutSpecItem that replaces layout specific items
* Prevent baseline pass if not needed
* Update comments
* added control node test
* fix tests
* target action pair
* go back to class
* move ASControlTargetAction to Private
* added ASControlTarget to cimpole sources
* add ASControlTargetAction to framework target as well
* init local variables with nil
* removed comment with private Apple class name
* isEqual implementation for ASControlTargetAction
* eliminate retain cycle
* use ASControlTargetAction isEqual
* change to NSMutableOrderedSet
* Use OrderedSet and isEqual
* Use that NSMutableOrderedSet stored the same object only once
* Moving back to NSMutableArray
* minor improvements
* Only trigger table view height requery if row-node height changed
* Make ASTableView handle the section index bar better
* Remove outdated comment
* Add a main thread assertion