6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)
  • Q:

    Bijdrager
    verwijderd-profiel

    Objective-C: @synthesize underscore – wie kan het uitleggen?

    Hallo,

    Ik ben na een half jaar weer begonnen met Objective-C. Inmiddels kan ik JAVA, maar iOS apps maken is natuurlijk veel leuker.
    Objective-C snap ik grotendeels wel, maar er is iets wat ik nog nooit goed heb begrepen:

    Waarom zou je dit doen:

    @synthesize name = _name;
    En niet
    @synthesize name;
    of
    @synthesize name = name;

    Waar is de underscore voor? En waarom zou je er uberhaupt iets achter zetten?
    Gewoon @synthesize name; werkt namelijk ook.

    Er staat genoeg op internet hierover, maar het kwartje is nog niet gevallen.
    Wie kan mij uitleggen waar dit voor is? (eventueel in JAVA termen als dat het makkelijker maakt, om het te vergelijken)

    Bedankt


    Bijdrager
    koen

    Sommige mensen gebruiken die underscore om een ivar (variable) aan te geven met dezelfde (maar hoeft niet) naam als de property. Het is een stijl van programmeren, maar

    @synthesize name;

    voldoet prima.


    Bijdrager
    curryhano

    Je moet de underscore gebruiken om de ivar niet direct te benaderen. Dit om memory management problemen te voorkomen. Zie ook:


    Bijdrager
    verwijderd-profiel

    Curryhano, je link mist volgens mij.


    Bijdrager
    bitsflew
    curryhano

    Je moet de underscore gebruiken om de ivar niet direct te benaderen. Dit om memory management problemen te voorkomen. Zie ook:

    Dat verhaal gaat niet op voor ARC!


    Bijdrager
    bitsflew

    @Dr. User

    Sinds XCode4 wordt @synthesize name; geïnterpreteerd als @synthesize name = _name; maw er is geen verschil!

    Om in de code duidelijk onderscheid te maken tussen een property en de bijbehorende ivar zette men vaak een underscore voor de ivar naam.
    Dat laatste is door de jaren heen de standaard methode geworden.

6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.