有没有人遇到过与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]”似乎修复了问题,但之后就没有动画……
最佳答案 在我的项目中也出现了这个问题.我得到了相同的警告“所有依赖约束应该已从引擎中删除,也从视图的依赖约束列表中删除”.
正如你所说的那样,当我忽略它时,在其他屏幕上我出现了崩溃,显示出来
[UILayoutContainerView nsis_shouldIntegralizeVariable:]: message sent to deallocated instance
我发现,在我的情况下,我在调用[self.view layoutIfNeeded] – (void)viewWillDisappear:(BOOL)动画.当我删除它时,问题得到解决.
没有警告也没有崩溃.
根据我的理解,如果我们在视图被解除分配之前调用layoutIfNeeded,则会出现此警告.在下一个屏幕中,它会导致崩溃.
花了很多时间才弄明白这次事故.这就是为什么我要分享我的想法.
这可能对某人有帮助.