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 回答