1

組み込みクラス オブジェクトの動的インスタンスを作成したいと考えています。これを達成する方法がわかりません。たとえば、動的に複数のデータを再生できるように、以下のオーディオ プレーヤー オブジェクト インスタンスを動的に作成します。

audioPlayer = [[AVAudioPlayer alloc] initWithData:pData error:nil];

これの代わりに、私は以下のようなものになりたい、

audioPlayer1 = [[AVAudioPlayer alloc] initWithData:pData error:nil];
audioPlayer2 = [[AVAudioPlayer alloc] initWithData:pData error:nil];
audioPlayer3 = [[AVAudioPlayer alloc] initWithData:pData error:nil];

ここでは、1、2、3 を動的に追加できます。一度に追加する必要がある数がわからないため、動的に作成する必要があります。

私は好きなことをすることができますが、

AVAudioPlayer *[NSString stringWithFormat:@"audioPlayer%d", value] = [[AVAudioPlayer alloc] initWithData:pData error:nil];

しかし、これは受け入れられません。

誰かがこれを解決するのを手伝ってくれますか?

4

2 に答える 2

4

ループを使用してインスタンスを作成し、それらを可変配列に入れるだけです。

NSMutableArray *players = [NSMutableArray array];
for (int i = 0; i < 3; i++) {
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:pData error:nil];
    [players addObject:audioPlayer];
}
于 2012-06-08T09:06:38.517 に答える
0

@Ole Begemann提案されているように、動的な作成を for ループに入れます。しかし、私がすることは、作成するdynamic必要がある数の値を受け入れるメソッドを作成することです:

-(void)createAudioPlayers:(int)count {

    //Assuming `players` array is declared in your header as an NSMutableArray and initialized.

    pData = ... // your data

    for (int i = 0; i < count; i++) {

     AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:pData error:nil];
     [audioPlayer play];
     [players addObject:audioPlayer];

    }

}

これで、作成するプレーヤーの数に値を渡すだけで済みintます。

[self createAudioPlayers:4];

また

[self createAudioPlayers:8];

お役に立てれば !

于 2012-06-08T09:16:10.547 に答える