Sprache - Objective-COrdnen Sie eine häufig verwendete Klasse nur einmal zu?
Ich verwende die SoundEffect-Klasse, um einen kurzen Sound zu spielen. Ich verwende eine NSTimer ein Aufruf dieser Methode: (. Die Zahl Sache nur so ist der Ton spielt in einem bestimmten Intervall)
- (void)count {
count++;
if (count == 16) {
NSBundle *mainBundle = [NSBundle mainBundle];
SoundEffect *soundEffect = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"beep" ofType:@"aif"]];
[soundEffect play];
count = 0;
}
seconds = seconds - 0.0625; // is equal to 1/16th of a second; effectively takes off one second per second
if (seconds == 0) {
[timer invalidate]; // cancels timer
[timer release];
}
[self convertSeconds];
}
Wie auch immer, alles funktioniert gut, aber ich denke, es ist ineffizient, die SoundEffect-Klasse immerzu zuzuteilen und zu initialisieren, wenn mein Timer ausgelöst wird (was ziemlich oft der Fall ist). Gibt es einen Weg, auf dem ich aloc und init, wenn ich eine Taste drücke, um den Timer zu starten, und lassen Sie es zugewiesen und initialisiert, so dass alles, was ich tun muss, ist [soundEffect play]?
Danke!
Normalerweise verwende ich Instanzvariablen, um Daten zu speichern, die ich wiederverwende. –
Die Fülle der Singleton-Antworten sollte ignoriert werden. Es gibt keinen Hinweis darauf, dass Sie einen Singleton anstelle einer Instanzvariablen benötigen, aber der sofortige Sprung, um einen Singleton zu empfehlen, zeigt ein Patternitis- Muster. –
Wenn Sie nur eine Instanzvariable verwenden möchten, geben Sie hier – Daniel