“这个NSLayoutConstraint正在配置一个超出内部限制的常量”

时间:2014-10-14 09:29:29

标签: ios uitableview autolayout breakpoints lldb

在尝试调试AutoLayout问题时(在某些情况下,根据其内容大小应该增长的表格单元格),我在tableView:heightForRow:方法的最后一行设置了一个断点,并尝试打印systemLayoutSizeFittingSize:的值我得到了这个:

(lldb) p ((CGSize)[cachedCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]).height
2014-10-14 11:15:49.492 AppName[72132:10302054] 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.
(CGFloat) $0 = 57

好吧,那很有意思。但我尝试做它所说的并在该函数上设置断点:

Grab of breakpoint definition on _NSLayoutConstraintNumberExceedsLimit()

...而且这个断点没有被击中。

  • 我是否正确设置了断点?
  • 在任何情况下,任何关于我的约束导致这个问题可能出错的线索?

(令人讨厌的是,它似乎在某些案例中有效,但在其他案例中却没有,我看不出设置上的差异。)

1 个答案:

答案 0 :(得分:13)

忽略符号名称中的()。如果您使用调试器控制台窗口使用breakpoint set --name命令设置此断点,那么发生的情况会更清楚:

(lldb) br s -n _NSLayoutConstraintNumberExceedsLimit()
Breakpoint 1: no locations (pending).
WARNING:  Unable to resolve breakpoint to any actual locations.
(lldb) br s -n _NSLayoutConstraintNumberExceedsLimit
Breakpoint 2: where = Foundation`_NSLayoutConstraintNumberExceedsLimit, address = 0x00007fff9168e6f5
(lldb) 

如果您在Xcode调试会话中使用了breakpoint listbr l)命令,您会看到_NSLayoutConstraintNumberExceedsLimit()断点未在任何位置设置。