gpt4 book ai didi

ios - 如何使用 os_trace 打印 Objective-C 指针?

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:34 25 4
gpt4 key购买 nike

我正在尝试搜索 Activity Tracing在 iOS 应用程序中,一切都运行良好,直到我需要打印 Objective-C 指针。

在 WWDC 14 Session 714 Apple 的幻灯片中提到您可以使用 %p 打印指针:

enter image description here

但如果不设置 ARC (或我自己),我找不到可靠的方法。

我想打印与 NSManagedObject 关联的 NSManagedObjectContext,因为我使用多个上下文 我希望能够查看我是否正在传递 NSManagedObject 到意外的上下文。

第一次尝试:ARC 禁止结构中的 Objective-C 对象

os_trace("doing something with object in moc %p", object.managedObjectContext);

第二次尝试:编译但不打印我想要的内容

NSManagedObjectContext *moc = invite.managedObjectContext;
os_trace("doing something with object in moc %p", &moc);

生成的跟踪打印 0x16fd0e6d0(lldb) po invite.managedObjectContext 表示指针是 0x1741fce00

第三次尝试:我不敢相信这是唯一的方法

CFTypeRef moc = CFBridgingRetain(object.managedObjectContext);
os_trace("doing something with object in moc %p", moc);
CFRelease(moc);

这会打印出我期望的地址。但是 OMG 不得不手动保留/释放一些东西只是为了打印内存地址是可怕的。

我错过了什么?必须有更好的方法来做到这一点。

最佳答案

将指针传递给打印格式化程序的 %p 参数的正确方法是将其转换为 (void*)

关于ios - 如何使用 os_trace 打印 Objective-C 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32407569/

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