有没有办法在Swift中使用[self.view recursiveDescription]呢?我正在try 使用此方法,但出现以下错误:

'UIView' does not have a member named 'recursiveDescription'

有什么建议吗?

推荐答案

要从Swift访问私有/未记录的Objective-C API(如UIView上的-recursiveDescription方法),您可以执行以下操作:

  1. 在定义私有方法的类上创建一个新的Objective-C类别(例如UIView).
  2. 如果Xcode询问您如何配置桥接头,请点击Yes.(如果项目中已经有桥接头,则将跳过此步骤).
  3. 可以删除类别的实现文件(.m).
  4. 在类别标题中声明私有方法:

    // UIView+Debugging.h
    
    @interface UIView (Debugging)
    - (id)recursiveDescription;
    @end
    

现在,您可以设置断点并在LLDB中打印递归描述:

po view.recursiveDescription() as NSString

Swift相关问答推荐

SwiftData/PersistentModel.swft:540:致命错误:不支持的关系密钥路径ReferenceWritableKeyPath

在扩展中创建通用排序函数

如何在 Swift 中做类型安全的索引?

将 ArgumentParser 与 Swift 并发一起使用

如何判断一个值是否为 Int 类型

从 Swift Vapor Server 中调用 ShazamKit

为什么 NumberFormatter 在 Swift 中将 19,999,999,999,999,999 格式化为 20,000,000,000,000,000?

Swift 非参与者隔离闭包

从 Swift 列表中的行中检索值

swiftui更改显示的 Select 器值

无法增加系统镜像的大小

如何有条件地格式化 SwiftUI 代码

Swift在十进制格式中失go 精度

Xcode 7.3 Swift 的语法高亮和代码完成问题

为 UIActivityViewController Swift 设置不同的活动项

我可以在 Swift 中为泛型类型 T 分配默认类型吗?

iOS/Swift:如何检测 UITextField 上的touch 动作

Swift 中的可选数组与空数组

应用程序包不包含有效标识符

我可以让#selector 引用 Swift 中的闭包吗?