Posted at

Swiftでポインタが指している値にアクセス

More than 5 years have passed since last update.

Cで書かれたライブラリを使う時に調べたのでメモ。

Using Swift with Cocoa and Objective-C を参考にしました。


UnsafePointer<T>.memory

ポインタが指している値にアクセスするには memory を使うようです。


構造体のポインタからメンバー変数にアクセスする例


hoge.h

typedef struct tagHoge {

int foo;
int baa;
} Hoge;

Hoge *GetHoge();



test.swift

var a = GetHoge()

//a.foo = 10 // エラー
a.memory.foo = 10 // OK
println(a.memory.foo)

Swiftから見ると、GetHoge関数の戻り値の型はUnsafePointer<Hoge>となるので

これで良いようです。