Swift

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

More than 3 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>となるので
これで良いようです。