Это может быть основной вопрос, но я новичок в Cocoa и Objective-C и OOP в целом, и я не смог найти ответ на это в любом месте.Могу ли я создать один объект, доступный разными способами?
В приложении, которое я пишу, я хочу воспроизводить звуковой файл всякий раз, когда пользователь нажимает определенную кнопку. Я использую NSSound для этого, и у меня нет проблем с его внедрением. Проблема заключается в том, я только знаю, как сделать это путем создания нового NSSound объекта каждый раз при нажатии кнопки:
- (IBAction)playSound:(id)sender {
NSSound *sound = [[NSSound alloc] initWithContentsOfFile:kSoundFilePath byReference:YES];
[sound play];
}
Это вопрос для меня, потому что, если пользователь нажимает на кнопку несколько раз до того, как файл завершения воспроизведения , он создаст новые экземпляры NSSound, и все они будут играть друг над другом, чего я не хочу. Есть ли способ, которым я могу создать объект NSSound вне этого метода, и использовать метод IBAction для проверки кнопки, чтобы увидеть, играет ли NSSound, прежде чем говорить ему снова играть?
Как насчет sharedInstance/singleton? – Larme
Это не очень хороший подход. Он хочет сохранить переменную после ее создания, а не разрешать только один звуковой объект. – SevenBits