【问题标题】:Trying to print object description in Xcode produces an Error尝试在 Xcode 中打印对象描述会产生错误
【发布时间】:2016-08-14 00:22:25
【问题描述】:

我有一个 Objective-C 对象,我们可以称之为 ObjCObj 我实现了一个简单的描述方法,如果我在局部变量中实例化该类,它通常工作得很好。

问题: 我遍历 ObjCObj 对象数组并将它们放入 Swift 数组中

let cacheArray = [ObjCObj]()

我的数组被填满后,我尝试设置一个断点,尝试打印一个 Item 的值,我得到以下错误:

expression produced error: 

/var/folders/w9/3rvg1bk95379dgvcr11n16_h0000gp/T/lldb/3499/expr878.swift:1:46: error: use of undeclared type '__ObjC'
$__lldb__DumpForDebugger(Swift.UnsafePointer<__ObjC.ObjCObj>(bitPattern: 0x67fd9b0).memory)

如果我尝试打印如下表达式:

cacheArray[2]

它有效。但是如果我在调试器检查器中打开数组并选择数组的一行并要求打印描述,它就会失败。

【问题讨论】:

  • 嗨@Mikael,我遇到了类似的事情。您是否找到任何解决方案/解决方法?
  • 现在,我在我的对象中实现 debugDescription 以显示我需要的信息。我还直接访问控制台中的对象属性。 po myarray.count 或类似的东西。

标签: ios objective-c xcode swift debugging


【解决方案1】:

我刚才遇到了同样的错误,并在我的一个 Obj-C Mantle 模型类中将其追踪到一个错误的属性属性。 (错误地将对象视为标量。)

破碎:

@property(nonatomic, assign, readonly, nullable) AdditionalInformationStatus *additionalInformationStatus;
                     ^^^^^^

固定:

@property(nonatomic, copy, readonly, nullable) AdditionalInformationStatus *additionalInformationStatus;
                     ^^^^

这很容易解决,但很难找到。

【讨论】:

  • 好吧,我不知道为什么我们必须改变这个属性才能让 xcode 简单地打印一个变量:/
  • 这不仅阻止了我打印值,还导致我们的应用程序崩溃。当我添加断点来询问值时,我收到了与您收到的相同的错误。当我把注意力集中在这个问题上时,这显然是我们的一个错误。我们打算保留对象的副本,但是我们做了一个简单的分配,就像对委托一样,这意味着我们的对象引用计数没有增加,这导致它被释放,从而导致崩溃......(和上面无用的错误消息)
  • 禁用 Addess Sanitizer 显然可以解决问题。但并非适用于所有情况。
【解决方案2】:

这听起来像是一个错误。请发送至http://bugreporter.apple.com

【讨论】:

  • 这是一个错误吗?
猜你喜欢
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 2019-04-06
  • 2020-01-01
  • 2021-05-31
  • 1970-01-01
相关资源
最近更新 更多