【发布时间】:2013-03-26 21:48:26
【问题描述】:
每当某些属性发生更改时,我都会使用键值观察来执行特定操作(例如,每当其框架或边界发生更改时,重新布局自定义 UIView 的子视图)。有什么方法可以查看是谁(即什么功能)触发了这种变化?在我的observeValueForKeyPath:ofObject:change:context: 中设置一个断点并没有帮助,因为我认为我看不到是谁导致对frame 或bounds 的更改导致KVO 被触发。
在我的具体示例中,我无法弄清楚是谁/什么在改变我的 UIView 的尺寸。
编辑 #1:我的堆栈跟踪的屏幕截图,在 observeValue... 中调用帧/边界时暂停
另请注意,这仅用于调试目的。
【问题讨论】:
-
你确定吗?尝试将堆栈跟踪窗口底部的滑块一直拖动到右侧,您应该能够看到修改您正在观察的属性的函数
-
我添加了我的堆栈跟踪窗口的屏幕截图,所以请告诉我你看到了什么。我总是很难读到这些。
-
感谢@MartinR。知道
autoresizeArchivedView是什么以及为什么要调用它吗?这不是我写的函数。我关闭了autoLayout,如果这是相关的(?)。 -
每个视图都有自动调整大小的选项(即使没有自动布局)。我假设这些是在从 nib 文件加载视图时应用的。
-
任何想法为什么它昨天可能有效但今天无效?例如,是否有一个我可能不小心未选中的复选框?每当我向 SO 发帖时,似乎总是这是问题所在,而不是我在代码中编写的任何内容。
标签: objective-c cocoa-touch debugging key-value key-value-observing