使用给定的十六进制指针打印变量的正确方法是什么 (Xcode 10.3, 11 beta)
What's a proper way to print variable with a hex pointer given (Xcode 10.3, 11 betas)
鉴于臭名昭著
< NSLayoutConstraint:0x1c809d970 UIView:0x11fe288b0.height == 16 (active)> & co 来自自动布局引擎
通过十六进制指针值打印 UIView class 对象的勇敢新的快速世界方法是什么?
(lldb) p *((UIView*)0x11fe288b0)
错误: :3:12: 错误:应为“,”分隔符
*((UIView*)0x11fe288b0)
^
,
(lldb) po *((UIView*)0x11fe288b0)
错误: :3:12: 错误:应为“,”分隔符
*((UIView*)0x11fe288b0)
^
,
(lldb) expr *((UIView*)0x11fe288b0)
错误: :3:12: 错误:应为“,”分隔符
*((UIView*)0x11fe288b0)
^
,
这是 xcode 10.3 和 11 beta 3
更新:
(lldb) p *((UIView*)0x11fe288b0)
最初在 xcode 11 beta 5 中工作,现在它停止工作了:
这可能已在 beta 5 中修复,但可能
当我回到“已安装”的 xcode 10.3 时,该修复程序遭到破坏
附加组件
UPD2:这似乎是
的副本
如果问题只是布局约束,最简单的解决方案是为您的约束提供一个字符串标识符。您可以在代码或情节提要中执行此操作。使调试约束变得非常容易;标识符首先出现在调试输出中的引号中:
[LayoutConstraints] Unable to simultaneously satisfy constraints.
(
"<NSLayoutConstraint:0x600003af86e0 'getStartedBad' ... >",
"<NSLayoutConstraint:0x600003af8730 'getStartedTop' ... >"
)
如果问题是关于您只有地址的 UIView,您可以像这样向它发送消息:
(lldb) expr -l objc -O -- [(UIView*)0x11fe288b0 layer]
(是的,你必须与它交谈 Objective-C,但我认为没有其他方法。)
您可以在 Swift 中使用 unsafeBitCast 从地址投射到 UIView(或任何其他 class 的 mutatis mutandis),例如:
(lldb) po unsafeBitCast(<ADDRESS>, to: UIView.self)
您也可以通过这种方式访问属性:
(lldb) po unsafeBitCast(<ADDRESS>, to: UIView.self).bounds
等...
鉴于臭名昭著 < NSLayoutConstraint:0x1c809d970 UIView:0x11fe288b0.height == 16 (active)> & co 来自自动布局引擎
通过十六进制指针值打印 UIView class 对象的勇敢新的快速世界方法是什么?
(lldb) p *((UIView*)0x11fe288b0)
错误: :3:12: 错误:应为“,”分隔符 *((UIView*)0x11fe288b0) ^ ,
(lldb) po *((UIView*)0x11fe288b0)
错误: :3:12: 错误:应为“,”分隔符 *((UIView*)0x11fe288b0) ^ ,
(lldb) expr *((UIView*)0x11fe288b0)
错误: :3:12: 错误:应为“,”分隔符 *((UIView*)0x11fe288b0) ^ ,
这是 xcode 10.3 和 11 beta 3
更新:
(lldb) p *((UIView*)0x11fe288b0)
最初在 xcode 11 beta 5 中工作,现在它停止工作了: 这可能已在 beta 5 中修复,但可能 当我回到“已安装”的 xcode 10.3 时,该修复程序遭到破坏 附加组件
UPD2:这似乎是
如果问题只是布局约束,最简单的解决方案是为您的约束提供一个字符串标识符。您可以在代码或情节提要中执行此操作。使调试约束变得非常容易;标识符首先出现在调试输出中的引号中:
[LayoutConstraints] Unable to simultaneously satisfy constraints.
(
"<NSLayoutConstraint:0x600003af86e0 'getStartedBad' ... >",
"<NSLayoutConstraint:0x600003af8730 'getStartedTop' ... >"
)
如果问题是关于您只有地址的 UIView,您可以像这样向它发送消息:
(lldb) expr -l objc -O -- [(UIView*)0x11fe288b0 layer]
(是的,你必须与它交谈 Objective-C,但我认为没有其他方法。)
您可以在 Swift 中使用 unsafeBitCast 从地址投射到 UIView(或任何其他 class 的 mutatis mutandis),例如:
(lldb) po unsafeBitCast(<ADDRESS>, to: UIView.self)
您也可以通过这种方式访问属性:
(lldb) po unsafeBitCast(<ADDRESS>, to: UIView.self).bounds
等...