2015-09-18 67 views
4

我有一个从iOS9(我认为)出现的NSLayoutConstraint安装问题。无论如何,我得到以下控制台错误:跟踪NSLayoutConstraint崩溃?

This NSLayoutConstraint is being configured with a constant that exceeds internal limits. A smaller value will be substituted, but this problem should be fixed. Break on void _NSLayoutConstraintNumberExceedsLimit() to debug. This will be logged only once. This may break in the future.

其次:

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: A constraint cannot be made between a leading/trailing attribute and a right/left attribute. Use leading/trailing for both or neither.'

然后一堆堆信息:

*** First throw call stack: 
(
    0 CoreFoundation      0x0000000102b3af65 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x00000001025aedeb objc_exception_throw + 48 
    2 CoreFoundation      0x0000000102b3ae9d +[NSException raise:format:] + 205 
    3 Foundation       0x0000000102177e82 +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:] + 299 
    4 My App       0x000000010011f429 -[APStatisticsAverageFlightDuration viewDidInit] + 2841 
    5 My App       0x000000010011e909 -[APStatisticsAverageFlightDuration awakeFromNib] + 73 
    6 UIKit        0x000000010328752e -[UINib instantiateWithOwner:options:] + 2416 
    7 UIKit        0x000000010307284d -[UIViewController _loadViewFromNibNamed:bundle:] + 381 
    8 UIKit        0x0000000103073179 -[UIViewController loadView] + 178 
    9 UIKit        0x00000001032aad85 -[UITableViewController loadView] + 84 
    10 UIKit        0x000000010307347c -[UIViewController loadViewIfRequired] + 139 
    11 UIKit        0x0000000103073c7d -[UIViewController view] + 27 
    12 UIKit        0x00000001037ded8e __67-[UIStoryboardEmbedSegueTemplate newDefaultPerformHandlerForSegue:]_block_invoke + 524 
    13 UIKit        0x00000001035cf189 -[UIStoryboardSegueTemplate _performWithDestinationViewController:sender:] + 460 
    14 UIKit        0x00000001035cef8c -[UIStoryboardSegueTemplate _perform:] + 82 
    15 UIKit        0x00000001035cf250 -[UIStoryboardSegueTemplate perform:] + 156 
    16 UIKit        0x0000000103073687 -[UIViewController loadViewIfRequired] + 662 
    17 UIKit        0x00000001030b6c26 -[UINavigationController _layoutViewController:] + 54 
    18 UIKit        0x00000001030b74dd -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 433 
    19 UIKit        0x00000001030b7633 -[UINavigationController _startTransition:fromViewController:toViewController:] + 116 
    20 UIKit        0x00000001030b8879 -[UINavigationController _startDeferredTransitionIfNeeded:] + 890 
    21 UIKit        0x00000001030b967d -[UINavigationController __viewWillLayoutSubviews] + 57 
    22 UIKit        0x000000010325163d -[UILayoutContainerView layoutSubviews] + 248 
    23 UIKit        0x0000000102f9911c -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 710 
    24 QuartzCore       0x000000010146f36a -[CALayer layoutSublayers] + 146 
    25 QuartzCore       0x0000000101463bd0 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366 
    26 QuartzCore       0x0000000101463a4e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 
    27 QuartzCore       0x00000001014581d5 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277 
    28 QuartzCore       0x00000001014859f0 _ZN2CA11Transaction6commitEv + 508 
    29 UIKit        0x0000000102f1253a _afterCACommitHandler + 174 
    30 CoreFoundation      0x0000000102a669d7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 
    31 CoreFoundation      0x0000000102a66947 __CFRunLoopDoObservers + 391 
    32 CoreFoundation      0x0000000102a5c59b __CFRunLoopRun + 1147 
    33 CoreFoundation      0x0000000102a5be98 CFRunLoopRunSpecific + 488 
    34 GraphicsServices     0x0000000106016ad2 GSEventRunModal + 161 
    35 UIKit        0x0000000102ee8676 UIApplicationMain + 171 
    36 My App       0x000000010026c2cf main + 111 
    37 libdyld.dylib      0x000000010491f92d start + 1 
    38 ???         0x0000000000000001 0x0 + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

我怎么跟踪哪些约束导致问题?我有几十个。我已经添加了_NSLayoutConstraintNumberExceedsLimit()断点停靠我在这条线:

NSArray *constraintAircraftV = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[xLabelsCV(==lblCvHeight)]-spacing-[timePeriodCV(==timePeriodCvHeight)]-spacing-[aircraftCV(==aircraftCvHeight)]" options:0 metrics:metrics views:views]; 

我怎么凝胶,其中的问题是,虽然在这里?代码没有改变,但它从iOS9更新刚刚停止工作。

回答

2

嘿,我不认为_NSLayoutConstraintNumberExceedsLimit()导致崩溃。这只是一个警告。但是,它仍然应该是理想的。

专注于现在的崩溃。 问题在于:

[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: A constraint cannot be made between a leading/trailing attribute and a right/left attribute. Use leading/trailing for both or neither.'

在约束

也许某处你为到NSLayoutAttributeLeft项目相关NSLayoutAttributeLeading。 你可以把代码添加到约束条件吗?

+0

这是问题所在。我遇到的麻烦是在我的代码中找到了我做了这件事的地方。这很难追查。谢谢。 –

3

这是一个新的iOS 9问题。 取代:

[self addConstraint:[NSLayoutConstraint constraintWithItem:self.skipButton attribute:NSLayoutAttributeTrailling relatedBy:NSLayoutRelationEqual toItem:self **attribute:NSLayoutAttributeRight** multiplier:XXX constant:XXX]]; 

,使这两个属性是相同的:

[self addConstraint:[NSLayoutConstraint constraintWithItem:self.skipButton attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeRight multiplier:XXX constant:XXX]]; 

属性的两种情况:NSLayoutAttributeXXXX必须是相同的。

相关问题