Recentemente ho provato a compilare un progetto Xcode più vecchio (che ha usato per compilare bene), e ora sto vedendo un sacco di errori di questa forma:errore: scrivibile proprietà atomica non può abbinare un setter/getter sintetizzato con un setter/getter definito dall'utente
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
il modello di codice che causa questi errori sempre assomiglia a questo:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
posso capire perché è stato generato l'errore. Dico al compilatore di sintetizzare i miei accessors di proprietà (sia getter che setter), e subito dopo sovrascrivo manualmente il setter. Quel codice ha sempre un po 'spento.
Quindi, qual è il modo corretto di fare questo? Se uso @dynamic
anziché @synthesize
, dovrò scrivere anche il getter. E 'l'unica possibilità?
Questo succede solo con le proprietà 'atomiche'? In caso di proprietà atomiche potrebbe essere una buona idea mantenere la coppia getter/setter in sincronia rispetto alla strategia di blocco. Questo è difficile se una parte viene sintetizzata mentre l'altra è un codice personalizzato. –
Certamente se ne va la proprietà non anatomica. Interessante. Non avevo nemmeno pensato al problema di sincronizzazione. –
Ho visitato questo argomento per trovare una soluzione a questo problema esatto. Non voglio davvero scrivere un getter e un setter da solo. Oh bene ... –