【问题标题】:Console shows UIView as null, yet it still acts like it is present控制台将 UIView 显示为 null,但它仍然像存在一样
【发布时间】:2014-03-23 03:15:59
【问题描述】:

我正在调试一个相当大的问题,即点击状态栏不会UITableView 滚动到顶部。我检查了scrollsToTop,它被设置为yes,所以我很自然地开始查看它上面是否有任何UIView。

罪魁祸首是我引入的 UIView,它与 UIViewController 的视图大小相同。我没想到那里检查,因为当我注销时,它说它是 nil。

像这样:

但是,当我调用removeFromSuperView 时,滚动到 UITableView 的顶部效果很好! 这里

我检查了三次,这是唯一位于滚动条顶部的 UIView,那么给出了什么?它说它是空的。我也在使用ARC。我猜我在这里想要nil,而不是null。我在想如果我将它设置为 nil,它会将保留计数在 ARC 下设置为 0。也许在某处仍有对视图的引用?

【问题讨论】:

  • 当您将变量的引用设置为 nil 时,您为什么希望它不是 nil 呢?您可能对这件事有强烈的参考,但观点仍然存在表明其他人也是如此。

标签: ios objective-c memory-management automatic-ref-counting


【解决方案1】:

settingsView 设置为 nil 不会将其从其父视图中删除。它只是消除了您对它的引用。 ARC 或无 ARC,superview 将保留 settingsView,因此除非您明确删除它,否则它仍会覆盖您的状态栏。您可以尝试更改框架,使其不再覆盖状态栏。

我建议你试试 SparkInspector (http://www.sparkinspector.com/)。解决这类问题真是太棒了。

【讨论】:

  • 谢谢戴夫,火花检查器看起来不错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多