/ / Aký je význam predpony „_“ v parametroch v Objective-C [duplikát] - ios, object-c

Aký je význam predpony "_" v parametroch v Objective-C [duplicate] - ios, objective-c

Hral som s iOS niekoľko mesiacov,Vždy používajte @synthesize na „vytvorenie setteru a getteru“ aplikácie @property. Ale v niektorých tutoriáloch často vidím @synthesize param = _param, nemám dosť zmysel.

For example: in .h file

@property (nonatomic, retain) NSString *param1;
@property (nonatomic, retain) NSString *param2;

in .m file

@synthesize param1; //this is what I like to do
@synthesize param2 = _param2; // this is what "experienced" programmer does

Z môjho zvyku môžem použiť self.param1 alebo len param1 na získanie tohto prípadu, existuje nejaký rozdiel mimochodom?

Zdá sa, že od ostatných radi používajú _param2 namiesto iného prístupu. Viem, že to má niečo spoločné s getrom / setterom, ale stále nie som celkom jasný.

Mohol by niekto vysvetliť svoj rozdiel a výhody / nevýhody?

Mnohokrat dakujem.

odpovede:

7 pre odpoveď č. 1

Keď používate

@synthesize param2 = _param2;

znamená, že na priamy prístup k premennej inštancie používate iné meno.

(Ak v nových verziách XCode neurčíte svoju vlastnú syntézu, XCode pre vás napíše jednu, rovnako ako tú uvedenú)

Ak používate:

_param2

Pristupujete priamo k premennej inštancie.

Ak používate:

self.param2

Pristupujete k premennej cez setter / getter a tie setter / getter sú definované pomocou vlastností, ktoré ste nastavili.

Spravidla chcete pristupovať k vášmu ivaru priamo pomocou iniciačných metód a vo zvyšku triedy, ktoré používate samostatne.

Ak chcete získať viac informácií, kliknite na tento odkaz:

Zapuzdrenie údajov v cieli C


2 pre odpoveď č. 2

@synthesize param2 = _param2; Používa iný názov pre základnú premennú inštancie. Pro je, že nemáte prístup k ivaru omylom tak ľahko.

V týchto dňoch sa syntetizuje automaticky a používa druhý variant, takže jednoducho vynechajte @synthsize všetko dohromady a použitie self.param a _param.