我想为内置类对象创建动态实例。我不知道如何实现这一目标。 例如,我想动态创建下面的音频播放器对象实例,以便我可以播放动态多个数据。
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];
但这是不可接受的。
有人可以帮我解决这个问题吗?
答案 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];
希望这有帮助!