Domanda

in tutto il mondo dicono che cosa è IBAction ma non riescono a spiegare ciò che tutto il mezzo di dichiarazione.

Qual è il mittente e l'ID?

Saluti, Namratha

È stato utile?

Soluzione

  1. Secondo le mie conoscenze IBAction solo implica void

  2. id è un tipo generico C, che accetta oggetti di qualsiasi tipo / classe. E 'un po' che cosa simile a puntatore nullo in C. Possiamo usare id come parametro di un metodo, in caso, se gli oggetti di differenza tipo di classi accedere a tale metodo.

  3. sender, qui,

    • è un nome del parametro umana nome (è possibile il nome nulla)
    • si riferisce all'oggetto che chiama il metodo changeGreeting:

Esempio:

Consente di assumere il metodo changeGreeting: è definito in ClassA, e si legge come di seguito.

- (IBAction)changeGreeting:(id)sender {

    [sender setText:@"Hello %@", [sender class]];

    // Nothing can be returned from this method
}

E considera abbiamo le seguenti righe in Class B.

// LINE 1
[aLabel addTarget:objOfClassA action:@selector(changeGreeting:) forControlEvents:UIControlEventTouchUpInside];

// LINE 2
[aTextField addTarget:objOfClassA action:@selector(changeGreeting:) forControlEvents:UIControlEventTouchUpInside];

In linea 1, aLabel è il mittente e objOfClassA rappresenta l' ricevitore . E in linea 2: aTextField è la mittente e objOfClassA è il ricevitore . HereaLabel & aTextField sono chiamati mittenti perché sono chiama il metodo changeGreeting:. E objOfClassA si chiama ricevitore perché il metodo objOfClassA's changeGreeting: è denominato qui.

Quando i tocchi utente all'interno aLabel o aTextField, loro text verranno modificati in Hello UILabel o Hello UITextField rispettivamente.

L'altro modo: Possiamo anche chiamare il metodo changeGreeting: di objOfClassA dal Class B simile alla seguente.

[objOfClassA changeGreeting:aLabel];
[objOfClassA changeGreeting:aTextField];

Come il codice di cui sopra si spiega da sé, objOfClassA è il ricevitore . Ma aLabel & aTextField non sono la mittenti . Perché non sono richiamando il metodo. Qui ci sono solo gli argomenti. Qui il mittente reale è Class B, ma aLabel e aTextField sono passati nel (id)sender argomento. In entrambi i casi il risultato dell'esecuzione metodo stesso.

Altri suggerimenti

Forse si dovrebbe verificare un tutorial Objective-C ( come questo ), in quanto questo è piuttosto semplice.

L'IBAction è definito come "vuoto", in modo che significa che il metodo non ha un valore di ritorno. E 'utile solo per Interface Builder, quindi sa quali dei vostri metodi sono in realtà l'azione è possibile creare un collegamento.

La parte (id) sender è un (unico) parametro per il metodo, che prende il nome del mittente. (Id) dice che il tipo di parametro può essere qualsiasi oggetto:

Objective-C FAQ :

Qual è id?
E 'un tipo C generico che Objective-C utilizza per un oggetto arbitrario. [...]

IBAction è una parola chiave (#define'd a void) che Interface Builder cerca nel codice sorgente, e se trova come un tipo di ritorno, si aggiungerà alla lista di azioni possibili è possibile cablare il vostro IB elementi a.

id è un tipo di oggetto generico in Objective-C che denota qualsiasi Objective-C oggetto.

e sender è solo il nome del parametro id-digitato.

Funzionalmente dicendo: IBAction è una parola chiave per identificare i metodi che è possibile collegare al attraverso Interface Builder. (Id) mittente è necessario individuare l'oggetto è innescare il metodo in caso si utilizza lo stesso metodo per diversi controlli.

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