Delegate?!

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

  • Sorry das ich wieder nerve :)

    Ich habe eine Verständnisfrage:

    Delegates helfen mit ja z. B. zwischen der Kommunikation zwischen Controller und Model.
    Wie in meinem Fall. Controller startet und ruft das Model auf. Wenn das Model die Daten fertig geladen hat, ruft es über das delegate eine Funktion im Controller auf.

    Mal eine ganz blöde Frage ... an die Funktion die ich im Model aufrufe kann ich ja auch die Controller Instanz mit "self" übergeben und im Model über "self" dann die Funktion aufrufen im Controller. So erspare ich mir ja die Geschichte mit dem Delegate.

    Ich gehe aber mal davon aus, das dies eine unschöne Vorgehensweise ist und sich in irgendeiner Weise negativ auswirkt (Speicher, Geschwindigkeit, was auch immer).

    Vielleicht könnt ihr mir ja mal ganz kurz sagen, warum das Mist ist :)

    Danke schön.
  • wenn du das übergibst dann "verdrahtest" du die hart miteinander

    im Gegensatz zum Delegate bei dem ja auch ein Protocol implementiert wird, was dir dann sagt, ein Object der Klasse X kann als Delegate genutzt werden weil es bestimmte Methoden implementiert hat

    der Vorteil ist das hier dann jedes beliebiges Object als Delegate verwenden kannst
    wenn das dann nicht mehr dein Controller machen soll, sondern irgendein anderes Model zB
    dann musst du nur anpassen wer das neues Delegate ist und musst nicht in deinem Model selber alles anpassen

    ein Beispiel ist das TableView Delegate
    wenn dein TableView in deinem ViewController ist, dann kann der Controller selber das Delegate für die TableView sein oder du nimmst ein Model dafür
    der TableView ist dann komplett egal wer sein Delegate ist, hauptsache das Delegate hat die geforderten Methoden implementiert
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • Ein Delegate ist dafür da, daß man an ihn Aufgaben bzw. Entscheidungen delegieren kann. Somit kann er das Verhalten eines Objektes einer Klasse ändern und beeinflußen. Solch ein Delegations-Ansatz erspart oft das Ableiten von Klassen bzw. ist ein Ersatz dafür. Natürlich muss so ein Delegate mittels Protokoll realisiert werden, sonst wird's ja irgendwie sinnfrei.