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ď č. 1Keď 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:
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
.