如何在Swift中获取类实例ID?

XBX*_*eap 2 swift

在Objective-C中,我将使用以下代码来标识类的实例和在控制台中调用的函数。

NSLog(@"[DMLOG - %@] %@", NSStringFromSelector(_cmd), self);
Run Code Online (Sandbox Code Playgroud)

这将返回类似于以下控制台的内容,在该控制台中,我将获得一个实例ID来跟踪对象的不同实例。

[DMLOG - prepForInput] <GridBase: 0x7fb71860a190>
Run Code Online (Sandbox Code Playgroud)

如何获取实例ID和在Swift中被调用的函数?我已经尝试了以下方法来在Swift中获取ID,但它仅提供类名而没有实例ID值?任何建议,将不胜感激。

print("[DBG] Init: \(self)")
Run Code Online (Sandbox Code Playgroud)

Dan*_*yev 5

要获取当前函数名称,请使用#function文字。

至于实例ID,看起来您有两个选择:

  1. 继承自NSObject(UIKit类始终继承),因此类实例将具有实例ID:

    class MyClass: NSObject {
      override init() {
        super.init()
        print("[DBG: \(#function)]: \(self)")
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您的类没有继承自NSObject您,您仍然可以通过内存地址来标识实例:

    class Jumbo {
      init() {
        print("[DBG: \(#function)]: \(Unmanaged.passUnretained(self).toOpaque())")
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)