iPhone:如何为任何内置类对象创建动态实例?

时间:2012-06-08 09:01:46

标签: iphone

我想为内置类对象创建动态实例。我不知道如何实现这一目标。 例如,我想动态创建下面的音频播放器对象实例,以便我可以播放动态多个数据。

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];

但这是不可接受的。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

只需使用循环创建实例并将它们放入可变数组中。

NSMutableArray *players = [NSMutableArray array];
for (int i = 0; i < 3; i++) {
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:pData error:nil];
    [players addObject:audioPlayer];
}

答案 1 :(得分: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];

希望这有帮助!