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 № 1Un 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
- Usa variabili statiche
- Rappresenta con il simbolo "+"
- Può essere chiamato direttamente con la classe senza creare l'istanza di una classe
- Il metodo self in class rappresenta la classe stessa, tuttavia self in instance method rappresenta quella particolare istanza di una classe.