相关疑难解决方法(0)

Xcode 9中的UINavigationController方法setToolbarHidden bug:自动布局约束的无限计算导致OOM

我有一个UINavigationController嵌套的实例UITabBarController.我使用导航控制器到达某个视图控制器(标签栏仍然可见),从中我切换到第二个视图控制器(标签栏不再可见).

在第二个视图控制器中,只要我调用: [self.navigationController setToolbarHidden:NO] 应用程序冻结并且内存增长,直到OOM异常崩溃.

我承认不建议将导航控制器嵌套在标签栏中,但是这个设置似乎在iOS 11之前正常工作.

编辑:当停止执行时,我看到很多调用:

UIView(UIConstraintBasedLayout)

UIView(AdditionalLayerSupport)

NSLayoutConstraint

这是完整的堆栈跟踪

* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP   * frame #0: 0x0000000106dd895c libobjc.A.dylib`objc_msgSend
+ 28
    frame #1: 0x00000001067b6b9b Foundation`-[NSConcreteMapTable removeObjectForKey:] + 138
    frame #2: 0x00000001069e6019 Foundation`_substituteOutAllOccurencesOfBodyVar + 1282
    frame #3: 0x00000001067f3c5b Foundation`-[NSISEngine tryAddingDirectly:] + 144
    frame #4: 0x00000001067f332f Foundation`-[NSISEngine tryToAddConstraintWithMarker:expression:integralizationAdjustment:mutuallyExclusiveConstraints:]
+ 440
    frame #5: 0x00000001069f2067 Foundation`-[NSLayoutConstraint _addLoweredExpression:toEngine:integralizationAdjustment:lastLoweredConstantWasRounded:mutuallyExclusiveConstraints:]
+ 273
    frame #6: 0x00000001067ea601 Foundation`-[NSLayoutConstraint _addToEngine:integralizationAdjustment:mutuallyExclusiveConstraints:] + 240
    frame #7: 0x0000000109c9488d UIKit`__57-[UIView(AdditionalLayoutSupport) …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uinavigationcontroller ios ios11

6
推荐指数
1
解决办法
484
查看次数

标签 统计

ios ×1

ios11 ×1

iphone ×1

objective-c ×1

uinavigationcontroller ×1