Skip to content

Commit

Permalink
Avoid crash in release due to superview (second constraint) being nil
Browse files Browse the repository at this point in the history
  • Loading branch information
angelen10 committed Jan 23, 2025
1 parent 8bd77ea commit 3787bdb
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions Masonry/MASViewConstraint.m
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,17 @@ - (void)install {
if (!self.firstViewAttribute.isSizeAttribute && !self.secondViewAttribute) {
secondLayoutItem = self.firstViewAttribute.view.superview;
secondLayoutAttribute = firstLayoutAttribute;

if (!secondLayoutItem) { // Don't continue to crash.
// 发送通知,让外界处理(在 Debug / Release 下生效)
NSString *reason = [NSString stringWithFormat:@"NSLayoutConstraint for %@: A multiplier of 0 or a nil second item together with a location for the first attribute creates an illegal constraint of a location equal to a constant. Location attributes must be specified in pairs.", self.firstViewAttribute.view];
NSException *exception = [[NSException alloc] initWithName:@"MasonryException" reason:reason userInfo:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"AutoLayoutExceptionNotification" object:exception];

// 断言(在 Debug 下生效)
NSAssert(NO, reason);
return;
}
}

MASLayoutConstraint *layoutConstraint
Expand Down

0 comments on commit 3787bdb

Please sign in to comment.