diff --git a/AsyncDisplayKit/ASDisplayNode.mm b/AsyncDisplayKit/ASDisplayNode.mm index a5bea4a6c3..cb046190fe 100644 --- a/AsyncDisplayKit/ASDisplayNode.mm +++ b/AsyncDisplayKit/ASDisplayNode.mm @@ -26,11 +26,11 @@ #import "ASEqualityHelpers.h" #import "ASRunLoopQueue.h" #import "ASEnvironmentInternal.h" -#import "ASLayoutValidation.h" #import "ASInternalHelpers.h" #import "ASLayout.h" #import "ASLayoutSpec.h" +#import "ASLayoutValidation.h" #import "ASCellNode.h" NSInteger const ASDefaultDrawingPriority = ASDefaultTransactionPriority; @@ -855,17 +855,6 @@ static ASDisplayNodeMethodOverrides GetASDisplayNodeMethodOverrides(Class c) _pendingLayoutTransition = nil; } -#pragma mark - Layout Validation - -- (void)validateLayout:(ASLayout *)layout -{ - ASLayoutableValidation *validation = [[ASLayoutableValidation alloc] init]; - [validation registerValidator:[[ASLayoutableStaticValidator alloc] init]]; - [validation registerValidator:[[ASLayoutableStackValidator alloc] init]]; - [validation validateLayout:layout]; -} - - #pragma mark - _ASTransitionContextCompletionDelegate - (void)transitionContext:(_ASTransitionContext *)context didComplete:(BOOL)didComplete @@ -1920,8 +1909,8 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock) if (isRootLayout) { layout.position = CGPointZero; layout = [ASLayout layoutWithLayoutableObject:self constrainedSizeRange:constrainedSize size:layout.size sublayouts:@[layout]]; -#if DEBUG - [self validateLayout:layout]; +#if LAYOUT_VALIDATION + ASLayoutableValidateLayout(layout); #endif } return [layout flattenedLayoutUsingPredicateBlock:^BOOL(ASLayout *evaluatedLayout) { diff --git a/AsyncDisplayKit/Layout/ASLayoutValidation.h b/AsyncDisplayKit/Layout/ASLayoutValidation.h index a5c6fd73b0..7efde56c4f 100644 --- a/AsyncDisplayKit/Layout/ASLayoutValidation.h +++ b/AsyncDisplayKit/Layout/ASLayoutValidation.h @@ -9,11 +9,17 @@ */ #import +#import NS_ASSUME_NONNULL_BEGIN @class ASLayout; +// Enable or disable automatic layout validation +#define LAYOUT_VALIDATION 0 + +extern void ASLayoutableValidateLayout(ASLayout *layout); + #pragma mark - ASLayoutableValidator @protocol ASLayoutableValidator @@ -45,6 +51,9 @@ typedef void (^ASLayoutableBlockValidatorBlock)(id layout); @end +/* + * Not in use at the moment + */ @interface ASLayoutablePreferredSizeValidator : NSObject @end diff --git a/AsyncDisplayKit/Layout/ASLayoutValidation.mm b/AsyncDisplayKit/Layout/ASLayoutValidation.mm index 4d567d52d3..8010ae3698 100644 --- a/AsyncDisplayKit/Layout/ASLayoutValidation.mm +++ b/AsyncDisplayKit/Layout/ASLayoutValidation.mm @@ -17,6 +17,15 @@ #import +#pragma mark - Layout Validation + +void ASLayoutableValidateLayout(ASLayout *layout) { + ASLayoutableValidation *validation = [[ASLayoutableValidation alloc] init]; + [validation registerValidator:[[ASLayoutableStaticValidator alloc] init]]; + [validation registerValidator:[[ASLayoutableStackValidator alloc] init]]; + [validation validateLayout:layout]; +} + #pragma mark - Helpers static NSString *ASLayoutValidationWrappingAssertMessage(SEL selector, id obj, Class cl) {