我的问题有点儿难以理解,这就是为什么我发布了所有代码,所以我要求每个代码都请先测试所有代码,然后再给我答案。谢谢

在我的应用程序中,我以编程方式创建了所有UIButtons,然后将所有这些UIButtons保存在NSMutableArray中。这是我的代码:

-(void)button:(id)sender
{
int btnn = 0;
int spacex = 152;
int spacey=20;
int k=0;
saveBtn = [[NSMutableArray alloc] init];
for (int i=0; i<48; i++)
      {
          if (btnn>6)
          {
              spacey=spacey+25;
              spacex = 152;
              btnn = 0;
          }
          else
          {
              btnn++ ;
              k++;
              UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
              btn.frame = CGRectMake(spacex, spacey, 25.0, 25.0);
              int idx;
              idx = arc4random()%[arr count];
              NSString* titre1 = [arr objectAtIndex:idx];
              [btn setTitle: titre1 forState: UIControlStateNormal];
              [btn setTitleColor: [UIColor yellowColor] forState: UIControlStateNormal];
              [btn.titleLabel setFont:[UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:22.0]];
              spacex = spacex + 25;
              btn.tag=k;
              [btn addTarget:self action:@selector(aMethod:)forControlEvents:UIControlEventTouchUpInside];
              [saveBtn addObject:btn];
              [self.view addSubview:btn];
        }
    }
}

现在,在(aMethod :)中,在每个UIButton TouchUpInside事件上添加点击声音。这是我的代码。
- (void)aMethod:(id)sender
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"button-17" ofType:@"wav"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate=self;
    [theAudio play];
}

每件事都可以在我的应用程序启动时很好地工作,但是在100次单击后连续不断地大约单击UIButtons,我听不到点击声,当我单击事件内部的Next UIButtons修饰时,它崩溃了。

最佳答案

应用程序由于未捕获异常NSInternalInconsistencyException,原因:无法在捆绑包中加载NIB:名称为secondclass的NSBundle </Users/moon/Library/Application Support/iPhone Simulator/4.1/Applications/3E14E5D6-4D1B-4DAC-A2B9-07667E99C399/soundtesting.app‌​> (loaded)
是的。我们这里是无法理解日志消息的。您的UIButton(我只能假定将一个新视图推送到堆栈上)正在引用一个根本不存在的NIB。这是一个命名问题,而不是按钮问题。我很可能会检查对-initWithNibName:的任何调用,并查看您的NIB是否真的被命名为“secondclass”。请记住,iOS文件名是CaSe SeNsITive。

//.h
...
@property (nonatomic, retain) AVAudioPlayer * player;

//.m
-(void)viewDidLoad
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"button-17" ofType:@"wav"];
    player=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    player.delegate=self;
    //in MRC, use [path release];
}

-(void)someMethod:(id)sender
{
    [player play];
}

10-08 05:48