Objective C piccolo chiarimento sintassi
-
27-09-2019 - |
Domanda
Ho visto questo codice nella maggior parte del tempo. Qui ci sono due nomi di variabili definite e nell'attuazione esso sintetizzare assegnando. Che cosa è lo scopo di fare qualche cosa come questa? Come mantenere 2 nomi delle variabili indipendenti. E 'questo tipo di una convenzione?
Test.h
@interface Test {
id<something> _variable1;
}
@property (nonatomic, retain) id<something> variable2;
Test.m
@synthesize variable2 = _variable1
Soluzione
C'è una sola variabile. La cosa di nome variable2
è in realtà una proprietà, che è fondamentalmente una scorciatoia sintattica di un metodo coppia get / set. Quando si definisce una proprietà, è possibile scrivere il get / set metodi esplicitamente ...
- (void)setVariable2:(id<something>)value {
if (_variable1 != value) {
[_variable1 release];
_variable1 = [value retain];
}
}
- (id<something>)variable2 {
return _variable1;
}
... o utilizzare il costrutto @synthesize
per generare automaticamente i metodi di cui sopra, risparmiando così un sacco di battitura monotona. (Emette anche il codice per rilasciare _variable1 sulla distruzione dell'oggetto, che non ho incluso qui.)
A volte, tuttavia, si potrebbe desiderare di implementare uno o l'altro di questi metodi in modo diverso sui valori predefiniti. In questo caso, si potrebbe scrivere il proprio. Si può anche mescolare insieme @synthesize
e una versione personalizzata di solo uno dei metodi.