Ant*_*hko 1 debugging xcode ios
如何重命名 Xcode 可视化调试器中的视图?这是 UIView 的海洋,因此几乎不可能判断约束适用于哪个 uiview。
UIViewControllers 显示标题,而 UIViews 除非它是 UIView 的派生类,否则显示标题。你如何区分它们?
案例切中要害
按住 Control 键单击相关视图,然后在上下文菜单中选择“打印说明”:
<UIView: 0x7fbec8508420; frame = (30 34; 163 117); autoresize = RM+BM; 
    layer = <CALayer: 0x6000019c65c0>>
通常这足以识别视图。如果不是,您可以询问视图问题,尽管语法有点棘手:
(lldb) expr -l objc -O -- [(UIView*)0x7fbec8508420 backgroundColor]
<UIDynamicModifiedColor: 0x6000017c6f10; contrast = normal, 
    baseColor = <UIDynamicSystemColor: 0x6000019c6600; name = systemYellowColor>>
我有时使用的另一个技巧是给视图一个标识符。一个鲜为人知的技巧是,一个层有一个name你可以随意使用的层。视图有一个层。所以我声明一个扩展:
extension UIView {
    @objc var name : String? { return layer.name }
}
现在您可以向视图询问其name. 您可以在代码中或(使用运行时属性)在故事板中分配名称。
自从我最初给出这个答案以来,我为视图命名并在视图调试器中查看它的技术已经有所发展,所以我想展示它现在的样子:
extension UIView {
    @objc var debugName: String {
        get { layer.name ?? "" }
        set { layer.name = newValue }
    }
    open override var debugDescription: String {
        var proposedDescription = description
        if !debugName.isEmpty {
            proposedDescription.insert(
                contentsOf: "; name = '\(debugName)'",
                at: proposedDescription.index(proposedDescription.endIndex, offsetBy: -1)
            )
        }
        return proposedDescription
    }
}
这很酷的原因是,当您打印描述时,在视图调试期间,调试名称会自动显示在 Xcode 控制台中。我无法描述它有多么有用。与约束标识符一起,您可以轻松地弄清楚到底发生了什么。
| 归档时间: | 
 | 
| 查看次数: | 424 次 | 
| 最近记录: |