Вы спрашиваете, как вызвать playFailSound:? Или вы спрашиваете, как объявить массив звуков в заголовочном файле, чтобы сделать его переменной экземпляра?
Первая проблема, с которой вы столкнулись, заключается в том, что вы используете разные имена переменных для массива в двух методах. в viewDidLoad вы используете soundArray, а в playFailSound вы используете звуки.
В вашем заголовочном файле вам нужно объявить массив как переменную экземпляра:
#import <UIKit/UIKit.h>
@interface MyObject : NSObject {
NSArray *_sounds; //declare the variables
NSInteger _currentSound; //this doesn't need to be unsigned, does it?
}
@property(nonatomic, retain) NSArray *sounds; //property
@property(value) NSInteger currentSound; //property
//method declarations
- (void) playFailSound;
- (void) playSoundWithFilename:(NSString *)fileName;
@end
Вы заметите, что я использовал подчеркивание в имени переменной, но не в свойстве. Таким образом, вы не будете случайно использовать переменную, когда хотите использовать свойство.
В вашем файле реализации вам понадобится следующее:
#import "MyObject.h"
@implementation MyObject
//synthesize the getters and setters, tell it what iVar to use
@synthesize sounds=_sounds, currentSound=_currentSound;
- (void)viewDidLoad {
NSArray *tempSounds = [[NSArray alloc] initWithObjects: @"0.wav",
@"1.wav",
@"2.wav, nil];
self.currentSound = 0; //use the setter
self.sounds = tempSounds; //use the setter
[tempSounds release]; //we don't need this anymore, get rid of the memory leak
[super viewDidLoad];
}
- (void) playFailSound {
self.currentSound=self.currentSound++; //use the getters and setters
if (self.currentSound >= [self.sounds count]) {
self.currentSound = 0;
}
[self playSoundWithFilename:[self.sounds objectAtIndex:self.currentSound]];
}
- (void) playSoundWithFilename:(NSString *)filename {
//you fill this in
}
@end
Теперь все, что вам нужно сделать, это вызвать playFailSound откуда-то и заполнить часть, которая фактически воспроизводит звук.
По сути, для того, чтобы два метода ссылались на одну и ту же переменную, которая не передается между ними, она должна быть переменной экземпляра.
Это довольно простой материал, поэтому, если вы не понимаете, что я здесь объясняю, я бы рекомендовал перечитать некоторые вводные материалы Apple.