[iOS] AudioPlayer ohne Singleton aber wie sonst?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [iOS] AudioPlayer ohne Singleton aber wie sonst?

    Moin Moin,

    da Singleton hier im Forum immer ein heißes Thema ist und ich gerade vor der Entscheidung stehe wie ich etwas sinnvoll aufbauen kann. Wollte ich einmal vorab Fragen ob ihr Anmerkungen habt was denn sinnvoll ist.

    Ich habe schreibe gerade an einer iOS App fürs iPhone. in dieser App gibt es mehrere Stellen an denen mal Sounds ausgegeben werden sollen. Aktuell sind es 2 ViewController in denen Sounds vorhanden sind (sind noch nicht alle)
    jetzt instanziiere ich in jedem dieser ViewController einen AudioPlayer nutze den VC als Delegate und spiele halt meine Sounds ab. Funktioniert, keine Frage.

    Wenn ich nun aber mehrere VCs habe in denen ich Sounds abspielen möchte instanziiere ich auch mehrere AudioPlayer, ich empfinde das irgendwie als unnötig weil ich dann in meiner App so oft doppelten Code habe und wenn es mal dazu kommt das was geändert werden muss (was auch immer, iOS8 oder so) dann muss ich all diese VCs anfassen, anstatt das zentral machen zu können.

    Mit einem Singleton könnte ich das zentralisiert machen, (würde hier wieder als globale Variable missbraucht werden, was natürlich unschön ist), ich denke nur ich hätte dann zusätzlich zum unschönen Singleton das Problem des Delegates, im Singleton müsste ich mir dann von allen VCs die Sounds abspielen möchten eine Reference vorhalten um den aufrufenden VC über delegate methoden nutzen zu können

    andere Möglichkeit wären Notifications wobei sich das hier auhc nicht so wirklich richtig anfühlt.

    Notification verschicken Button 1 in VC a wurde gedrückt, der AudioPlayer lauscht oh 1 wurde gedrückt , spielt den sound 1 ab und schickt wenn fertig ist eine Notification (bis hier noch richtig) ich müsste dann aber in der Notification mitgeben das dies von der 1 war damit dann auch nur der aufrufer den das interessiert was macht, was irgendwie gegen Notifications spricht.

    würde mich freuen wenn ihr da ein paar Argumente zu habt
    danke
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • Und warum erstellst du Dir nicht einfach eine Klasse meineSoundAbSpielKlasse? Dann brauchst du nicht an mehreren Stellen etwas zu ändern und hast trotzdem kein singleton

    Und wenn du die Klasse nur instanzierst wenn du sie wirklich brauchst und nicht als strong property im ViewController hälst, dann brauchst du dir auch über den Speicher keine Gedanken machen, denn dann macht das das System schon für Dich.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • erstmal danke für die antwort,

    wenn man das so macht, dann hält die meineSoundsKlasse ja einen AudioPlayer , würde man das AudioPlayerDelegate dann meineSounds nutzen oder an den VC
    damit das dann komplett abgekapselt ist eher meineSOunds und für meineSounds das noch mal extra machen und den VC als Delegate oder?

    also:
    meineSounds ist Delegate für AudioPlayer und VC ist Delegate für meine Sounds
    oder reicht man den VC durch bis zum Audioplayer als delegate?
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint: