CoreFoundation __bridge
iOSでCoreFoundationフレームワークのオブジェクトはARCが効かないので自分でCFReleaseする必要がある。FoundationオブジェクトとCoreFoundationオブジェクトをキャストする__bridgeを使えば、代入するときに参照カウントを操作できる。
・id→void*
id x = [[NSObject alloc] init];
void *y = (__bridge void *)x;
__bridge 参照カウントは変わらない。idオブジェクトが破棄されるとvoid*も破棄。
__bridg_retained 参照カウントを+1する。idオブジェクトが破棄されてもvoid*は破棄されない。CFRelease(y)するまで保持し続ける。
__bridge_transfer 参照カウントを-1する。参照カウントが0になり、オブジェクトはすぐに破棄される。(まずコンパイルエラー)
この記事が気に入ったらサポートをしてみませんか?