void * pointerのC構造体にObjective Cオブジェクトを保持する必要があります。この構造体は外部ライブラリで定義されており、定義を変更することはできません。void *ポインタにARCを指定してObjective-Cオブジェクトを割り当てる
のは、それは次のように定義されたとしましょう:
struct c_context {
void* user_data;
};
と私は私のコードで行う必要があることはこれです:
struct c_context *context;
...
context->user_data = [[MYObjCClass alloc] init];
はしかし、私はMYObjCClass
オブジェクトがされることを確認する必要があります保持される。 OBJ-Cのオブジェクトを保持するようにコンパイラに伝えるvoid*
へ
- キャスト(またはブリッジ)するためにどのように:
だから私の質問はありますか?
- 後でデータをクリーンアップする必要があるときにオブジェクトを解放する方法はありますか?
がAS(__bridge_retainedボイド*)と同じとCFBridgingReleaseをCFBridgingRetainさC.における手動のメモリ管理に好ましいであろう(__bridge_transfer MYObjCClass *)? – Dmitry
はい、しかし、CFBridging *マクロは何が起こっているかをより明白にします。 –
素晴らしいです。ありがとう、ロブ。今それは非常に明確です – Dmitry