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