Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios &引用;此NSLayoutConstraint配置的常量超过了内部限制;_Ios_Uitableview_Autolayout_Breakpoints_Lldb - Fatal编程技术网

Ios &引用;此NSLayoutConstraint配置的常量超过了内部限制;

Ios &引用;此NSLayoutConstraint配置的常量超过了内部限制;,ios,uitableview,autolayout,breakpoints,lldb,Ios,Uitableview,Autolayout,Breakpoints,Lldb,在尝试调试自动布局问题时(在某些情况下,应根据其内容大小增长的表单元格不是),我在tableView:heightForRow:方法的最后一行设置了一个断点,并尝试打印systemLayoutSizeFittingSize:的值,我得到以下结果: (lldb) p ((CGSize)[cachedCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]).height 2014-10-14 11:15:

在尝试调试自动布局问题时(在某些情况下,应根据其内容大小增长的表单元格不是),我在
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
好吧,那很有趣。但我尝试按照它所说的做,并在该函数上设置断点:

。。。这个断点不会被击中

  • 我是否正确设置了断点
  • 在任何情况下,我的约束可能会导致什么问题,有什么线索吗
(令人烦恼的是,它似乎在某些情况下起作用,但在其他情况下不起作用,我看不出设置有什么不同。)

从符号名称中省略
()
。如果使用调试器控制台窗口通过
断点集--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
)命令,您会看到
\n布局约束编号EXCEEDSLIMIT()
断点没有在任何位置设置。

现在,我已经根据
br l
设置了断点(谢谢!)但它仍然不会被命中,除非我在调试器中调用
p(CGSize)[cachedCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]
,在这种情况下,我可以看到命中计数上升!终于解决了问题。如果我必须手动设置标签上的
preferredMaxLayoutWidth
,自动布局到底为我做了什么@RobertAtkins,你是怎么修复的?我的手机里有一个标签水平地靠近UIImageView。为了让标签正确计算它想要的高度,我必须将其
preferredMaxLayoutWidth
设置为单元格的宽度,减去UIImageView和任何相邻填充的宽度。我觉得我必须这么做有点愚蠢,在iOS 8上似乎不再需要了。@RobertAtkins,看起来真的很愚蠢。如果单元格宽度不同怎么办?