私は構造体ivar
の「プレーンな」C配列ですCFURLRef
。これを と呼びますsourceURLArray
。6 つの要素を保持するように初期化します。
後で、関数でオブジェクトを作成 (割り当て/初期化) しNSURL*
ます。私はそれを呼び出しfileURL
、そのオブジェクトのコピーを前述の配列の最初の要素に保存したいと考えています。私がする必要があるのはこれだけだと思いました:
sourceURLArray[0] = (__bridge CFURLRef)([fileURL copy]);
ただし、コードを実行すると、関数を介して 2 回目の割り当て解除されたインスタンス メッセージにメッセージが送信されます。変数を調べると、上記の行が実行された後、sourceURLArray[0]
は と同じアドレスを保持しますfileURL
。関数が完了すると範囲外になるためfileURL
、アドレスのsourceURLArray[0]
割り当てが解除されます。
コピー、無料のブリッジングのニュアンス、またはその両方について、何か基本的なことを誤解しているようです。