/ / Metodi di classe e di istanza di differenza - obiettivi-c, metodi, convenzioni

Metodi di classe e di istanza di differenza - obiettivi-c, metodi, convenzioni

Qual è la differenza tra metodi di classe e metodi di istanza. Perché ne abbiamo bisogno separatamente? Qualcuno può spiegare per favore?

Metodi di classe e di istanza

• Le istanze rispondono ai metodi di istanza

 - (id)init;
- (float)height;
- (void)walk;

• Le classi rispondono ai metodi di classe

 + (id)alloc;
+ (id)person;
+ (Person *)sharedPerson;

Taimur

risposte:

6 per risposta № 1

Un metodo di istanza è disponibile solo su un'istanza della classe, mentre un metodo di classe non ha bisogno di un'istanza, ma è disponibile sulla classe.

I metodi di classe sono indicati con a + mentre i metodi di istanza sono indicati con a - prima del loro tipo di ritorno.

Prendiamo NSObject per esempio. NSObject ha un metodo di classe chiamato + (id)alloc. Il metodo di allocazione viene utilizzato per allocare un'istanza della classe. Ovviamente l'alloc deve essere un metodo di classe perché se fosse un metodo di istanza, da dove otterresti l'istanza "root"?

D'altro canto - (id)init è un metodo di istanza perché inizializza lo stato di un'istanza.


5 per risposta № 2

Un esempio:

Human -> Class You -> Instance

Human poteva extinguish, you non può. You poteva drink a Coke, Human non può.

Instance il metodo si applica solo alle persone,

Mentre Class il metodo viene applicato all'intero gruppo con le stesse funzionalità identificabili.

È la differenza tra uno e molti, l'individuo e l'intera società.

[SomeClass alloc] significa che una nuova istanza della classe è nata proprio come ti viene dato alla luce,

init si applica a Instance, come i tuoi genitori ti danno un nome, ti danno da mangiare e ti mandano a scuola, quindi hai le abilità per vivere in questa società.


0 per risposta № 3
  1. Usa variabili statiche
  2. Rappresenta con il simbolo "+"
  3. Può essere chiamato direttamente con la classe senza creare l'istanza di una classe
  4. Il metodo self in class rappresenta la classe stessa, tuttavia self in instance method rappresenta quella particolare istanza di una classe.