在尝试调试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
好吧,那很有意思。但我尝试做它所说的并在该函数上设置断点:
...而且这个断点没有被击中。
(令人讨厌的是,它似乎在某些案例中有效,但在其他案例中却没有,我看不出设置上的差异。)
答案 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 list
(br l
)命令,您会看到_NSLayoutConstraintNumberExceedsLimit()
断点未在任何位置设置。