Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift中获取类实例ID?_Swift - Fatal编程技术网

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

如何在Swift中获取类实例ID?,swift,Swift,在Objective-C中,我将使用以下代码来标识一个类的实例和在控制台中调用的函数 NSLog(@"[DMLOG - %@] %@", NSStringFromSelector(_cmd), self); 这将返回类似下面控制台的内容,在这里我将获得一个实例ID来跟踪对象的不同实例 [DMLOG - prepForInput] <GridBase: 0x7fb71860a190> 我刚刚使用以下命令运行了一个快速测试: print("\(self) \(#function) -

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

NSLog(@"[DMLOG - %@] %@", NSStringFromSelector(_cmd), self);
这将返回类似下面控制台的内容,在这里我将获得一个实例ID来跟踪对象的不同实例

[DMLOG - prepForInput] <GridBase: 0x7fb71860a190>

我刚刚使用以下命令运行了一个快速测试:

print("\(self) \(#function) - Count \(count)")
我得到了以下结果:

<XXXXXXX.FeedViewController: 0x7fcebdf05d40> viewWillAppear - Count 3
视图将出现-计数3

我会尝试一下,看看它是否有帮助。

要获取当前函数名,请使用
#function
literal

对于实例ID,看起来您有两个选项:

  • 继承自
    NSObject
    (UIKit类以任何方式继承它),以便类实例具有实例ID:

    class MyClass: NSObject {
      override init() {
        super.init()
        print("[DBG: \(#function)]: \(self)")
      }
    }
    
  • 如果您的类不是从
    NSObject
    继承的,您仍然可以通过内存地址标识实例:

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

  • 刚刚签出了它,它似乎只给出了一个实例ID,如果它是ViewController,而不是任何其他类。非常奇怪,如果我将NSObject子类化,但不建议这样做,因此仍然需要找出一种方法来获取ID(如果是VC或NSObject以外的任何类)。啊,很抱歉,我错过了这一点。我没想过要试试。谢谢你,丹!这在所有课程上都非常有效!我感谢你的帮助。
    class Jumbo {
      init() {
        print("[DBG: \(#function)]: \(Unmanaged.passUnretained(self).toOpaque())")
      }
    }