From 596416eec43df64e785a0e965fe3572b1ba580ce Mon Sep 17 00:00:00 2001 From: Orta Therox Date: Wed, 18 May 2016 08:53:22 -0400 Subject: [PATCH] Assert on predicates that would return nil --- FLKAutoLayout/Private/FLKAutoLayoutPredicateList.m | 2 ++ FLKAutoLayout/Private/UIView+FLKAutoLayoutPredicate.m | 2 +- FLKAutoLayout/UIView+FLKAutoLayout.h | 4 +--- FLKAutoLayout/UIView+FLKAutoLayout.m | 2 -- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/FLKAutoLayout/Private/FLKAutoLayoutPredicateList.m b/FLKAutoLayout/Private/FLKAutoLayoutPredicateList.m index 3e011a6..f34d48e 100644 --- a/FLKAutoLayout/Private/FLKAutoLayoutPredicateList.m +++ b/FLKAutoLayout/Private/FLKAutoLayoutPredicateList.m @@ -61,6 +61,8 @@ - (void)addPredicateFromString:(NSString *)string { if (priorityRange.location != NSNotFound) { predicate.priority = [[string substringWithRange:priorityRange] integerValue]; } + + NSAssert(predicate.priority < UILayoutPriorityRequired, @"Due to FLKAutoLayout's nullability API, priorities over 1000 ( which would fail and return null ) are not supported."); [predicates addObject:[NSValue valueWithBytes:&predicate objCType:@encode(FLKAutoLayoutPredicate)]]; } diff --git a/FLKAutoLayout/Private/UIView+FLKAutoLayoutPredicate.m b/FLKAutoLayout/Private/UIView+FLKAutoLayoutPredicate.m index b9a9852..f883bc2 100644 --- a/FLKAutoLayout/Private/UIView+FLKAutoLayoutPredicate.m +++ b/FLKAutoLayout/Private/UIView+FLKAutoLayoutPredicate.m @@ -19,7 +19,7 @@ - (NSLayoutConstraint *)applyPredicate:(FLKAutoLayoutPredicate)predicate toView: } - (NSLayoutConstraint *)applyPredicate:(FLKAutoLayoutPredicate)predicate toView:(id)viewOrLayoutGuide fromAttribute:(NSLayoutAttribute)fromAttribute toAttribute:(NSLayoutAttribute)toAttribute { - if (predicate.priority > UILayoutPriorityRequired) return nil; + NSAssert(predicate.priority < UILayoutPriorityRequired, @"Due to FLKAutoLayout's nullability API, priorities over 1000 ( which would fail and return null ) are not supported."); UIView *view; id toItem; diff --git a/FLKAutoLayout/UIView+FLKAutoLayout.h b/FLKAutoLayout/UIView+FLKAutoLayout.h index 6a4cb12..e9fd650 100644 --- a/FLKAutoLayout/UIView+FLKAutoLayout.h +++ b/FLKAutoLayout/UIView+FLKAutoLayout.h @@ -1,13 +1,11 @@ @import UIKit; NS_ASSUME_NONNULL_BEGIN -FOUNDATION_EXTERN NSString *const FLKNoConstraint; - /// A collection of categories for UIViews, note the /// `view` API can either be a `UIView` subclass or a `FLKAutoLayoutGuide`. @interface UIView (FLKAutoLayout) - + #pragma mark Generic constraint methods for two views /// Align an attribute of one view to another. diff --git a/FLKAutoLayout/UIView+FLKAutoLayout.m b/FLKAutoLayout/UIView+FLKAutoLayout.m index bdedfd1..17ac6da 100644 --- a/FLKAutoLayout/UIView+FLKAutoLayout.m +++ b/FLKAutoLayout/UIView+FLKAutoLayout.m @@ -1,8 +1,6 @@ #import "UIView+FLKAutoLayout.h" #import "FLKAutoLayoutPredicateList.h" -NSString *const FLKNoConstraint = @"0@1001"; // maximum valid priority is 1000, constraints with a priority > 1000 will be ignored by FLKAutoLayout - typedef NSArray *(^viewChainingBlock)(UIView *view1, UIView *view2);