Die Wiederverwendung von Objekten ist normalerweise eine schlechte Idee, im Allgemeinen versuchen Sie, Ihre Objekte so kurz wie möglich zu halten. Dies reduziert die Anzahl der möglichen Zustände Ihres Codes und erleichtert das Nachdenken darüber. ("Woher kam dieser Wert? Vielleicht ist es ein Überbleibsel aus der vorherigen Instanz Verwendung?" Yuck.) Brechen Sie diese Regel nur, wenn Sie in messbare Probleme laufen.
Weitere Informationen zu diesem Gedankengang finden Sie in mit "unveränderlich" getaggten Fragen .
Es gibt keine API, um eine neue Datei an eine vorhandene AVAudioPlayer-Instanz zu übergeben. Die Erstellung von AVAudioPlayer ist jedoch nicht teuer, daher sollten Sie sich keine Gedanken um die Leistung machen, solange Sie die Instanzen freigeben, sobald Sie fertig sind.
Wenn Sie über einen festen Satz von Sounds verfügen, die sich überspielen oder wahrscheinlich wiederholt abgespielt werden, können Sie für jeden Sound eine AVAudioPlayer-Instanz erstellen und diese Instanzen durch Aufrufen von play
für die entsprechende Instanz erneut verwenden / p>
Wenn nur ein Sound gleichzeitig abgespielt wird und Sie neue Sounds erzeugen (zum Beispiel mit Text-to-Speech basierend auf Benutzereingaben), habe ich im Allgemeinen einen einzelnen Player als Eigenschaft. Wenn ein neuer Sound abgespielt wird, rufe ich [player stop]
auf, lasse den alten Player los und instanziiere einen neuen mit der neuen Sounddatei.
Tags und Links objective-c avaudioplayer cocoa-touch