Wofür braucht man noch properties?

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

  • Wofür braucht man noch properties?

    Hi,
    der Titel sagst schon. Ich verstehe seit arc mittlerweile nicht mehr, wofür man properties (im Sinne von accessoren) überhaupt noch braucht. Eine reine iVar mit geeignetem reference prefix müsste doch reichen.
    Besonders bei ausschließlich privat gebrauchten Variablen braucht man unterm Strich dann doch erheblich weniger Code.
    Wer kann mir erklären, warum Apple templates immer noch properties benutzen? Werden die doch noch für die Speicherverwaltung gebraucht?
  • Descartes schrieb:

    Hi,
    der Titel sagst schon. Ich verstehe seit arc mittlerweile nicht mehr, wofür man properties (im Sinne von accessoren) überhaupt noch braucht. Eine reine iVar mit geeignetem reference prefix müsste doch reichen.

    Umgekehrt wird ein Schuh draus: Wozu braucht man ivars noch?

    Descartes schrieb:

    Besonders bei ausschließlich privat gebrauchten Variablen braucht man unterm Strich dann doch erheblich weniger Code.

    Direkt auf ivars - vielleicht auch noch von außerhalb der Klasse - zuzugreifen, ist extrem unsauber und verstößt ggf. gegen das Paradigma der Datenkapselung. Variablen sollten immer durch Accessoren gekapselt sein.

    Descartes schrieb:

    Wer kann mir erklären, warum Apple templates immer noch properties benutzen? Werden die doch noch für die Speicherverwaltung gebraucht?

    Was heißt immer noch? Die haben die Templates in den letzten Jahren auf Propertys umgestellt. Bei vielen iOS-Templates sind inzwischen sogar die hässlichen ivar-Blöcke rausgeflogen. Ivars sind veraltet und nicht die Propertys.
    „Meine Komplikation hatte eine Komplikation.“
  • Was du sagst stimmt zwar, jedoch nicht so ohne weiteres.

    1. Ivar-Blöcke müssen nicht mehr im Header stehen.

    2. Das Kapselungsargument, dem ich grundsätzlich auch folge, gilt innerhalb der Klasse nur eingeschränkt. Letztlich landest du hier bei einem unmittelbaren -release im -dealloc als Diskussion.

    Hier ist auch die Diskussion:
    Wofür braucht man noch properties?

    +Wir sollten uns auf einen Thread konzentrieren.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    1. Ivar-Blöcke müssen nicht mehr im Header stehen.

    macmoonshine schrieb:

    Bei vielen iOS-Templates sind inzwischen sogar die hässlichen ivar-Blöcke rausgeflogen.

    ?

    Amin Negm-Awad schrieb:

    Das Kapselungsargument, dem ich grundsätzlich auch folge, gilt innerhalb der Klasse nur eingeschränkt.

    Ja, da hast Du natürlich grundsätzlich recht. Daran hatte ich beim Schreiben auch schon gedacht...

    Amin Negm-Awad schrieb:

    +Wir sollten uns auf einen Thread konzentrieren.

    Ich hatte den Doppelpost leider erst gesehen, als ich meinen Beitrag schon abgeschickt hatte.
    „Meine Komplikation hatte eine Komplikation.“
  • Konzentrieren wir uns hier.

    Zu oben:
    Ich sagte nicht, dass man auf Ivar--Blöcke verzichten kann (das geht ja schon länger), sondern, dass sie nicht mehr im Header stehen müssen (das ist releativ neu). Man kann also Ivars explizit definieren – warum auch immer – und das im Modul tun.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • So ganz verstehe ich Deine Aussage nicht. Seit der Modern Runtime - zumindest bei 64-Bit - kann ich doch bei synthetisierten Propertys auf die ivar-Deklaration verzichten. So neu ist das doch nun auch nicht mehr.

    Amin Negm-Awad schrieb:

    Man kann also Ivars explizit definieren – warum auch immer – und das im Modul tun.

    Wie meinst Du das?
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    So ganz verstehe ich Deine Aussage nicht. Seit der Modern Runtime - zumindest bei 64-Bit - kann ich doch bei synthetisierten Propertys auf die ivar-Deklaration verzichten. So neu ist das doch nun auch nicht mehr.

    Amin Negm-Awad schrieb:

    Man kann also Ivars explizit definieren – warum auch immer – und das im Modul tun.

    Wie meinst Du das?

    Wie gesagt: Es geht nicht darum, darauf zu verzichten, sondern es im Modul zu machen. Damit fällt das Argument der Sichtbarkeit weg.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?