Come indicare che la parola è il nome del metodo in Objective-C?

1

Puoi indicare che XXX è il nome del metodo scrivendo XXX() .

Ma in Objective-C, non puoi scrivere XXX() per il metodo XXX .

Se scrivi XXX , non puoi sapere se XXX è il nome del metodo o un altro tipo di identificatore.

Come puoi indicare che XXX è il nome del metodo della classe Objective-C?

Modifica

Il richiamo del metodo di Objective-C è diverso da quello di un'altra lingua.

in Objective-C, la chiamata al metodo è:

[self XXX];

in un'altra lingua, la chiamata al metodo è:

self->XXX();

In altre lingue, ad esempio, possiamo scrivere in stackoverflow:

XXX() doesn't work

E possiamo sapere che XXX è metodo grazie a () .

Ma in Objective-C, non possiamo dire:

XXX doesn't work

Invece, per chiarire che XXX è un metodo, dobbiamo dire:

XXX method doesn't work
    
posta js_ 20.07.2012 - 16:59
fonte

3 risposte

3

Se stai parlando di usare init nella documentazione o in qualche altro posto in cui descrivi il metodo, puoi aggiungere un prefisso a - se è un metodo di istanza o un + se è una classe metodo. Se il metodo accetta parametri, lasciali fuori e concatena le diverse parti del nome del metodo, ad esempio: -initWithNibName:bundle: o +colorWithRed:green:blue:alpha: . Non lasciare i due punti, però - fanno parte del selettore. Ad esempio, potresti scrivere:

One way to create a color is by calling UIColor's +colorWithRed:green:blue:alpha: method.

A volte le persone includono sia il nome della classe che il nome del metodo, preceduti dal carattere appropriato e racchiusi tra parentesi quadre:

One way to initialize a view controller is with -[UIViewController initWithNibName:bundle:].

Questo non è un uso corretto della sintassi Objective-C - non chiameresti mai un metodo del genere - ma trasmette tre importanti informazioni: tipo di metodo (classe o istanza), classe e selettore .

Nel codice, ovviamente, non devi fare nulla di speciale per indicare che tipo di identificatore è. Basta usare il nome del metodo in un contesto appropriato e il compilatore lo scoprirà:

UIColor *color = [UIColor colorWithRed:0.5 green:0.5 blue:0.9 alpha:1.0];

NSMutableArray *array = [[NSMutableArray alloc] init];
    
risposta data 20.07.2012 - 17:33
fonte
4

In genere utilizzo +[NSString stringWithString:] e -[NSString initWithString:] , a meno che non ci sia abbastanza contesto per omettere la classe + o - e (quindi ridurla a stringWithString: e initWithString: ).

    
risposta data 20.07.2012 - 17:47
fonte
1

Terminologia: non è un nome di metodo, è un nome di messaggio, anche un selettore.

Alla tua domanda: è ovvio dalla sintassi, le mandate dei messaggi assumono sempre la forma [receiver message_with_parameters] , dove receiver è un'espressione (potrebbe essere un'altra [...] ), quindi qualsiasi cosa dopo il destinatario è un selettore (cioè , come si chiama il nome del metodo). In caso di selettore senza parametri, è solo il suo nome (come nel caso di [[Class alloc] init] , in caso di selettore con parametri, sembra [3 between: 1 and: 5] .

O il tuo problema è da qualche altra parte? La domanda era un po 'oscura.

    
risposta data 20.07.2012 - 17:06
fonte

Leggi altre domande sui tag