swift小知识点之打印对象的地址


  • 第一种打印变量的指针的方式如下代码所示

    Swift中,我们可以使用withUnsafePointer(to:_:)函数来获取一个变量的指针,如下代码所示:

    var x = 42
    var y = 3.14
    var z = "foo"
    var obj = NSObject()
    
    withUnsafePointer(to: &x) {ptr in print(ptr)}
    withUnsafePointer(to: &y) {ptr in print(ptr)}
    withUnsafePointer(to: &z) {ptr in print(ptr)}
    withUnsafePointer(to: &obj) {ptr in print(ptr)}
    
    
    // 0x000000011a145660
    // 0x000000011a145668
    // 0x000000011a145670
    // 0x000000011a145688

    withUnsafePointer(to:_:)将第一个参数转换为指针,然后将这个指针作为参数去调用第二个参数指定的闭包。如果闭包有返回值,它将作为函数的返回值。

    需要注意的是,生成的指针的生命周期限定于闭包内部,不能将其指定给外部的变量。

  • 第二种打印变量的指针的方式如下代码所示:
    var x = 42
    var y = 3.14
    var z = "foo"
    var obj = NSObject()
    
    func printPointer<T>(ptr: UnsafePointer<T>) {
        print(ptr)
    }
    
    printPointer(ptr: &x)
    printPointer(ptr: &y)
    printPointer(ptr: &z)
    printPointer(ptr: &obj)
    
    
    // 0x000000011a145660
    // 0x000000011a145668
    // 0x000000011a145670
    // 0x000000011a145688

     


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM