尝试在Xcode中打印对象描述会产生错误

问题描述:

我有一个我们可以调用的Objective-C对象ObjCObj 我实现了一个简单的描述方法,如果我在局部变量中实例化类型,通常可以很好地工作。尝试在Xcode中打印对象描述会产生错误

问题: 我通过ObjCObj对象的数组迭代,并把它们放在一个斯威夫特阵列

let cacheArray = [ObjCObj]() 

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

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] 

它的工作原理。但是,如果我在调试器检查器中打开数组并选择数组的一行并要求打印描述,则失败。

+0

嗨@Mikael,遇到类似的事情我自己。你有没有找到任何解决方案/解决方法? –

+0

现在,我在我的对象中实现了debugDescription来显示我需要的信息。我也直接访问控制台中的对象属性。 po myarray.count或类似的东西。 – Mikael

这听起来像一个错误。请在http://bugreporter.apple.com提交。

+0

这是一个错误? – mm24

我刚才收到同样的错误,并将其追踪到Obj-C Mantle模型类中的一个不良属性属性。 (不正确地处理一个对象作为标量。)

破碎:

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

修正:

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

这是一个简单的办法,但很难追查。

+0

好吧,我不知道为什么我们应该改变这个属性,以便xcode只是简单地打印一个变量:/ – Mikael

+1

这不仅仅是阻止我打印值,它也让我们的应用程序崩溃。当我添加一个断点来询问这个值时,我收到了同样的错误。当我把这个问题调整到位时,我们显然是犯了一个错误。我们打算保留一个对象的副本,但是我们做了一个简单的赋值,就像一个委托对象一样,这意味着我们的对象引用计数没有增加,导致它被释放,导致崩溃...(和上述无用的错误信息) –

+0

禁用Addess Sanitizer显然解决了这个问题。虽然不是所有情况。 – Mikael