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