UnsafePointer(Swift)

教學連結

範例

  • 某個API在C和Swift的對應寫法是:

//C
void method(const int *num) {
    printf("%d",*num);
}

//Swift
func method(num: UnsafePointer<CInt>) {
    print(num.memory)
}
  • 這裡原來的C API中已經指明了輸入的num指針的不可變的(const),因此在Swift中我們與之對應的是UnsafePointer這個不可變版本。如果只是一個普通的可變指針的話,我們可以使用UnsafeMutablePointer來對應:

C API

Swift API

const Type*

UnsafePointer

Type *

UnsafeMutablePointer

  • 在C中,對某個指針進行取值使用的是*,而在Swift中我們可以使用memory屬性來讀取相應內存中存儲的內容。通過傳入指針地址進行方法調用的時候就都比較相似了,都是在前面加上&符號,C的版本和Swift的版本只在聲明變量的時候有所區別:

// C
int a = 123;
method(&a);   // 输出 123

// Swift
var a: CInt = 123
method(&a)    // 输出 123

Last updated