Domanda

Sto imparando l'obiettivo-c e continuo a imbattermi nel simbolo @.Viene utilizzato in diversi scenari, ad esempio all'inizio di una stringa o per sintetizzare metodi accessori.

Cosa significa il simbolo @ nell'obiettivo-c?

È stato utile?

Soluzione

IL @ Il carattere non viene utilizzato negli identificatori C o C++, quindi viene utilizzato per introdurre le parole chiave del linguaggio Objective-C in un modo che non entri in conflitto con le parole chiave degli altri linguaggi.Ciò consente alla parte "Obiettiva" del linguaggio di mescolarsi liberamente con la parte C o C++.

Quindi, con pochissime eccezioni, ogni volta che vedi @ in alcuni codici Objective-C, stai esaminando i costrutti Objective-C anziché i costrutti C o C++.

Le principali eccezioni sono id, Class, nil, E Nil, che vengono generalmente trattate come parole chiave della lingua anche se possono avere anche un typedef O #define dietro di loro.Ad esempio, il compilatore effettivamente tratta id specialmente in termini di regole di conversione del tipo di puntatore che si applica alle dichiarazioni, nonché alla decisione se generare barriere di scrittura GC.

Altre eccezioni sono in, out, inout, oneway, byref, E bycopy;questi vengono utilizzati come annotazioni della classe di archiviazione sul parametro del metodo e sui tipi restituiti per rendere gli oggetti distribuiti più efficienti.(Diventano parte della firma del metodo disponibile dal runtime, che DO può esaminare per determinare come serializzare al meglio una transazione.) Ci sono anche gli attributi all'interno @property dichiarazioni, copy, retain, assign, readonly, readwrite, nonatomic, getter, E setter;quelli sono validi solo all'interno della sezione degli attributi di a @property dichiarazione.

Altri suggerimenti

Da Tutorial su Objective C:Il simbolo, il motivo per cui si trova all'inizio di varie parole chiave:

L'uso di @ dovrebbe rendere più semplice l'integrazione di un compilatore Objective-C su un compilatore C esistente.Poiché @ non è valido in nessun contesto in C tranne che in una stringa letterale, il tokenizzatore (un primo e semplice passaggio nel compilatore) potrebbe essere modificato per cercare semplicemente il carattere @ all'esterno di una stringa costante (il tokenizzatore comprende le stringhe letterali , quindi è in grado di distinguerlo).Quando si incontra @ il tokenizer metterebbe il resto del compilatore in "Objective-C Model". (Il parser Objective-C sarebbe responsabile del restituzione del compilatore in modalità C regolare quando rileva la fine del codice Objective-C).

Inoltre, se visto davanti a una stringa letterale, crea una NSString anziché un "char *" in C.

Da Macrumor:Esercitazione su Objective C, quando davanti alla stringa letterale:

Esistono anche valori letterali NSString @"".È essenzialmente una scorciatoia per il metodo +stringWithUTF8String di NSString.

@ aggiunge anche il supporto Unicode alle stringhe C.

Dal Manuale:

I framework Objective-C in genere non utilizzano stringhe in stile C.Invece, passano le stringhe come oggetti NSString.

La classe NSString fornisce un wrapper di oggetti per le stringhe che presenta tutti i vantaggi che ci si aspetterebbero, inclusa la gestione della memoria integrata per la memorizzazione di stringhe di lunghezza arbitraria, il supporto per Unicode, le utility di formattazione in stile stampa e altro ancora.Poiché tali stringhe vengono utilizzate comunemente, tuttavia, Objective-C fornisce una notazione stensa per la creazione di oggetti NSString da valori costanti.Per usare questa scorciatoia, tutto ciò che devi fare è precedere una stringa normale e doppia con il simbolo @, come mostrato nei seguenti esempi:

NSString *myString = @"My String\n";
NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top