0

これが私がやろうとしていることです:primaryPlayerトラックを再生するという AVAudioPlayer があり、プレーヤーをsecondaryPlayer. 次にprimaryPlayer、新しい AVAudioPlayer インスタンスを使用して、元のトラックと一緒に再生します。

多分それはこれと同じくらい簡単です:

secondaryPlayer=primaryPlayer;
primaryPlayer=[[AVAudioPlayer alloc] initWithContentsOfURL:songURL error:nil];

*これら 2 つの変数はクラスのプロパティであるため、定義がありません。

私は何かが欠けているのではないかと心配しています。たとえば、このコードは 2 つの変数が同じメモリ アドレスを指すように設定しているだけですか? コードの 2 行目以降で、両方の変数が同じプレイヤーに対応するようにするにはどうすればよいでしょうか?

これは何よりもObjective C(または単にC)の質問かもしれませんが、読んでくれてありがとう、これに関する「ポインタ」は素晴らしいでしょう!:)

4

1 に答える 1

0

プレーヤーがアドレスで有効なインスタンスをprimaryPlayer指し、任意の値を持ち、両方がプロパティとして宣言されていると仮定します。AVAudioPlayer0x1234secondaryPlayerstrong

secondaryPlayer=primaryPlayer;

これで、両方の変数が同じオブジェクト ( address 0x1234) を指します。

primaryPlayer=[[AVAudioPlayer alloc] initWithContentsOfURL:songURL error:nil];

secondaryプレーヤーはまだ同じオブジェクトを指しており、強い参照であるため、そのオブジェクトはまだ生きています。primaryPlayerが新しく作成されたオブジェクトを指すようになったので、2 つの異なるプレイヤー オブジェクトができました。

于 2013-09-03T00:48:38.183 に答える