Domanda

Capisco che @synthesize aumenta automaticamente i getter e i setter per una variabile di istanza.Quando specifico la parte= _Somequalcosa, capisco che questo informa il compilatore / runtime che voglio utilizzare una particolare variabile di supporto per GetTers / Setter.

Obiettivo-C autocare la variabile _something insieme ai miei getter / setter o dovrei definire quella variabile di istanza nel mio file di interfaccia / implementazione?

È stato utile?

Soluzione

La domanda è se @property nel file di intestazione e @synthesize nell'implementazione crea l'IVAR sottostante o se l'IVAR deve elencato nel file di intestazione. Esempio, nel file di intestazione:

@interface SomeClass : NSObject {
    NSString *_someString;    // Is this needed???
}
@property NSString *someString;
.

e nell'attuazione:

@synthesize someString = _someString;
.

La risposta è che dipende dal fatto che tu stia usando o meno l'eredità o il runtime moderno. In iOS stai sempre utilizzando il moderno runtime, quindi non hai mai bisogno della linea NSString *_somestring, ma questa domanda riguarda Mac OS X. per Mac OS X se si utilizza un programma a 64 bit su Mac OS X 10.5 o successivamente stai usando il Moderno runtime, altrimenti stai usando il runtime legacy e hai bisogno della linea extra nel tuo file di intestazione. Dato che ci sono state alcuni disinformativi pubblicati, ecco un riferimento: Guida alla programmazione Runtime Objective-C .

Altri suggerimenti

Scusa, erroneamente una parte della tua domanda.Se fai la parte @synthesize con il sottolineatura, sei tutto buono.Non è necessario definire esplicitamente un IVAR.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top