Obiettivo C - messaggi annidati ... confusione su

2

Chiedo se qualcuno potrebbe far luce su questo costrutto di messaggistica:

La documentazione dice che i messaggi appaiono tra parentesi [] e che il target / oggetto msg è a sinistra, mentre il msg stesso (e tutti i parametri) è a destra:

[msgTarget msg], ad es. [myArray insertObject:anObject atIndex:0]

OK, abbastanza semplice ... ma poi introducono l'idea che è conveniente annidare msgs al posto dell'uso di variabili temporanee - Prenderò la parola per questo - quindi l'esempio sopra diventa:

[[myAppObject theArray] insertObject:[myAppObject objectToInsert] atIndex:0]

In altre parole, [myAppObject theArray] è un msg nidificato, uno e due, 'theArray' è il 'messaggio'. Beh, dire che trovo questo confuso è un po 'un eufemismo ... Forse sono solo io ma' theArray 'non evoca un messaggio semanticamente o grammaticalmente. Che cosa assomiglia a un tizio che sa che Java è un tipo / classe. In Java facciamo cose come

Class objectInstance = new Class() ...

il bit a sinistra dell'operatore di assegnazione è ciò che questo cosiddetto messaggio annidato mi ricorda di ... con posizioni oggetto e classe / tipo commutate naturalmente. Ad ogni modo, ogni intuizione è molto apprezzata.

    
posta user10756 15.05.2013 - 14:08
fonte

1 risposta

2

In Objective-C, per convenzione, si fa riferimento alle proprietà con notazione dei punti. Pertanto, scrivi myAppObject.theArray invece [myAppObject theArray] .

In Objective-C il getter predefinito è il nome della variabile invece getVariable . Ad esempio, scrivendo

@property NSArray *theArray;

crea una variabile di istanza _theArray e genera il seguente accessor:

-(NSArray*) theArray { return _theArray; }

Quindi inviando theArray come messaggio stai effettivamente invocando un metodo. Ma ancora, usa solo la notazione dei punti per le proprietà.

    
risposta data 15.05.2013 - 14:24
fonte

Leggi altre domande sui tag