Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.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 8 GM上无限循环中的LayoutSubview_Ios_Uitableview_Ios8_Infinite Loop_Layoutsubviews - Fatal编程技术网

iOS 8 GM上无限循环中的LayoutSubview

iOS 8 GM上无限循环中的LayoutSubview,ios,uitableview,ios8,infinite-loop,layoutsubviews,Ios,Uitableview,Ios8,Infinite Loop,Layoutsubviews,我的应用程序将一个UITableViewCell子类化,并实现layoutSubviews来修改单元格的contentView宽度,如下所示: - (void)layoutSubviews { [super layoutSubviews]; // position subviews... CGRect frame = [[self contentView] frame]; frame.size.width -= 20; [[self contentView

我的应用程序将一个
UITableViewCell
子类化,并实现
layoutSubviews
来修改单元格的
contentView
宽度,如下所示:

- (void)layoutSubviews {
    [super layoutSubviews];
    // position subviews...
    CGRect frame = [[self contentView] frame];
    frame.size.width -= 20;
    [[self contentView] setFrame:frame]; 
}
使用iOS 8模拟器和Xcode 6 GM种子运行此代码时,会触发无限循环。然而,当在运行iOS 8 GM seed的真正iPhone或iPad上运行时,它不会像以前版本的iOS那样循环

我最初认为区别在于编译器优化,但模拟器在调试配置和发布配置中都会循环

问题

  • 为什么iOS 8 GM和模拟器之间存在差异
  • 这是一个关键的错误修复吗?我非常不愿意发布一个可能会出现严重挂起错误的应用程序,即使我无法在设备上复制它
  • 在您看来,在iOS 7和iOS 6上,重构此文件以消除循环而不导致回归的最佳方法是什么

这发生在我之前的一次iOS 8 Beta上。发生在设备和模拟器上。经过一些调试,我发现,
UITableViewCell
可能在iOS8内部使用autolayout。此外,对
contentView.frame
的任何更改都会触发
layoutSubviews
(这可能也是无限循环的原因)


作为一种解决方法,我在单元格的
contentView
中添加了一个子视图,并修改了它的
frame
。然后我使用这个视图,就像使用
contentView
(作为所有自定义单元格元素的超级视图)。

这个代码看起来很糟糕,想象一下屏幕上发生了什么事情,导致所有视图重新布局其子视图:您的内容视图可以很容易地变为零宽度。并不是说这就是模拟器上正在发生的事情,但我相信,如果您在解决可能的bug方面有这样好的态度,您可能会修复这个问题。我还没有下载转基因种子,然后我将测试你的代码,看看这个问题是否容易重现,同时,你最好选择一个单元格,发布递归(不是第一个)方法调用的回溯。你能详细说明一下如何做吗?我也有同样的问题。我想确保在横向模式下将detailView调整为正确的宽度。谢谢我不确定你到底有什么问题。我创建了一个要点,在代码中显示了这个想法:。如果这没有帮助,也许可以问一个新问题,并在那里提供更多的细节。你太棒了,这会花我好几天的时间。我正在手动计算单元格的高度,并在LayoutSubView中更改contentView框架。关闭nib文件上的自动布局修复了该问题。