これは私が現在行っていることです:
ブリッジングを行うとき、基本的に私はこれらの2つのルールを持っています
CF ランドから NS ランドに変換、CFBridgingRelease を使用 NS ランドから CF ランドに変換、__bridge を使用。
Apple のサンプル コードが別の方法で実行されているのを見たことがありません。
以下にサンプルを示します。
ABRecordRef ABWhatIsThis= (__bridge ABRecordRef)([self.allMyContacts objectAtIndex:indexPath.row]);
NSString * strName= CFBridgingRelease (ABRecordCopyCompositeName (ABWhatIsThis));
理由は、NS ランドから CF ランドに何かを変換したい場合、所有権を変更したくないからです。ARC は NS ランドのリテイン カウントを維持し、CF ランドのオブジェクトを NS ランドのカウンター パーツが破壊されるまで存続させます。
それが私が使用した理由ですABRecordRef ABWhatIsThis= (__bridge ABRecordRef)
CF ランドから NS ランドに何かを変換する場合は、CFBridgingRelease を使用します。その理由は、CFBridging を指す ARC オブジェクトを取得したら、CFBridging でそれらを保持する必要がないからです。
しかし、私はまだ混乱しています。CFBridgingRelease をいつ使用すべきかという厳しい規則はありますか?
また、CFBridging のようなものがないことに気付きました。CFBridgingRelease と CFBridgingRetain のみ。なぜアンバランスなのか気になります。