是否有人遇到过与autolayout相关的警告消息:
All dependent constraints should have been removed from the engine and also from the view's list of dependent constraints
目前,我们有一些内部有几个按钮的footerView,它们根据需要隐藏或显示。我们到处都使用完全自动布局。这是隐藏/显示此footerView的方法:
- (void)hideFooterView:(BOOL)shouldHide {
self.containerViewBottomConstraint.constant = shouldHide ? 0 : 50; // expand containing view to fit to full screen OR make it smaller to fit with footerView
[UIView animateWithDuration:1 animations:^{
[self.view layoutIfNeeded]; // animate expanding screen height to full height
[self.footerView setAlpha:(shouldHide ? 0 : 1)];
} completion:nil];
}
因此,当第一次调用此方法时,则没有错误消息。但在第二次提到警告后出现在控制台中。我们不能忽略这个警告,因为在其他屏幕中我们遇到了私有Apple方法调用的崩溃,而没有任何线索如何解决这个问题:
[UILayoutContainerView nsis_shouldIntegralizeVariable:]: message sent to deallocated instance
这是另一条崩溃消息:
[UILayoutContainerView nsis_valueOfVariable:didChangeInEngine:]: message sent to deallocated instance
我无法在网络上找到与“nsis_valueOfVariable:didChangeInEngine:”或“Autolayout dependent constraints”关键字相关的任何有用信息。有什么想法吗?
更新注释掉行“[self.view layoutIfNeeded]”似乎修复了问题,但之后就没有动画......
答案 0 :(得分:2)
在我的项目中也出现了这个问题。我得到同样的警告"所有相关的约束应该已经从引擎中移除,也从视图的依赖约束列表中删除了#34;。
正如你所说,当我忽略它并在其他屏幕中我崩溃了,显示
[UILayoutContainerView nsis_shouldIntegralizeVariable:]: message sent to deallocated instance
我发现,就我而言,我在[self.view layoutIfNeeded]
内呼叫-(void)viewWillDisappear:(BOOL)animated
。当我删除它时,问题得到解决。
没有警告也没有崩溃。
据我所知,如果我们在取消分配视图之前调用layoutIfNeeded
,则会发出此警告。在下一个屏幕中,它会导致崩溃。
花了很多时间来弄清楚这次崩溃。这就是我分享想法的原因。
这可能有助于某人。