gpt4 book ai didi

ios - 为什么lldb的po命令不能在dot中打印superview?

转载 作者:行者123 更新时间:2023-11-28 21:35:38 25 4
gpt4 key购买 nike

如果我想要 po subView 的 superview ,当我使用 subView.superView 时,它会提示 not found ,但是如果我使用 [subView superView] , po 命令会运行良好,这背后的原因是什么?

(lldb) po self.blackView.superview
error: property 'superview' not found on object of type 'UIView *'
error: 1 errors parsing expression
(lldb) po ((UIView*)self.blackView).superview
error: property 'superview' not found on object of type 'UIView *'
error: 1 errors parsing expression
(lldb) po [self.blackView superview]
<UIView: 0x15d53ce50; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x15d53cfc0>>

最佳答案

一般来说,它们并不是真正解析问题,它们往往是“类型信息的质量”问题。在这种情况下,superview 实际上是 UIViewHierarchy 类别上的一个属性,并且 clang 的调试信息中存在一个错误,导致它不会为类别中的属性生成调试信息。除非编译器知道类型,否则编译器不会将属性访问转换为方法调用。

如果您使用的是 Xcode7,通常可以通过指示 lldb 为具有更丰富类型的框架构建模块来解决使用 clang“模块”功能的框架(包括大多数 Apple 框架)的这种类型信息问题信息。您可以通过发出 lldb 命令来执行此操作:

(lldb) expr @import UIKit

在尝试表达之前尝试运行它,看看是否会更好。

关于ios - 为什么lldb的po命令不能在dot中打印superview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34039144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com