【问题标题】:iOS's LLDB's P command not printing frame variableiOS 的 LLDB 的 P 命令不打印帧变量
【发布时间】:2012-11-29 12:25:36
【问题描述】:

假设我想做一个

p uiTextFieldObj.frame

它会说错误:属性

'frame' not found on object of type 'UITextField *'

有什么技巧可以让我展示这个吗?

【问题讨论】:

    标签: ios xcode lldb


    【解决方案1】:

    你可以这样做:

    p (CGRect)[uiTextFieldObj frame]
    

    从 Xcode 4.5.2 开始,使用点语法在 lldb 中打印属性似乎只适用于您的应用中定义的对象的属性,而不适用于框架类定义的属性。

    【讨论】:

    • 这就是我发现的,我什至无法使用您展示的 [ ] 方法打印框架。苹果为什么要这样对我们?
    • 如果我显示的内容不起作用,您可能正在使用 Xcode 的开发人员预览版。尝试切换回 Xcode 4.5.2,它应该可以工作。
    【解决方案2】:

    您可以通过使用 [] 符号而不是 .符号:

    你试过了吗?

    print (CGRect)[textfieldObj frame]
    

    如果没有 (CGRect) 强制转换,它很可能会显示一个错误,指出它不知道返回类型。你也可以这样做:

    po textfieldObj
    

    它将向您显示框架和有关文本字段的其他一些信息。 po debug 命令将调用 objects -description 方法,您可以覆盖该方法以提供您喜欢的任何信息。

    【讨论】:

      【解决方案3】:

      An @import-ant Change in Xcode

      LLDB 的 Objective-C 解析器现在可以通过任何模块 您的应用程序并确定用于它的所有功能和方法的类型 定义

      e @import UIKit;
      po uiTextFieldObj.frame
      

      【讨论】:

        猜你喜欢
        • 2015-09-28
        • 2016-07-06
        • 1970-01-01
        • 2015-10-03
        • 2017-01-28
        • 2016-07-10
        • 2014-08-06
        • 2019-06-15
        • 2015-05-15
        相关资源
        最近更新 更多