Sto creando una classe base con un flag isDirty
. Viene impostato ogni volta che cambia una delle sue proprietà, ma poiché si tratta di una classe base, non sa quali siano le sue proprietà. Quindi, fondamentalmente, su ogni sottoclasse, devo ignorare ogni metodo - set:
a qualcosa di simile:È possibile sovrascrivere il modo in cui @synthesize funziona nell'obiettivo C?
- (id) setName:(NSString *)value {
if ([name isEqualToString:value]) {
return;
}
[name autorelease];
name = [value retain];
isDirty = YES; //Here's the important bit
}
Quasi ogni riga di questo è ciò che il setter automaticamente-sintetizzato farebbe. Esiste un modo per sovrascrivere quello che crea effettivamente @synthesize
?
Ci sono altre opzioni che ho trovato, ma sembrano tutte molto più lente in fase di esecuzione rispetto a questo metodo. Ho pensato a cose come l'aggiunta di un oggetto per osservare le sue modifiche alle proprietà, o la creazione di una funzione generica per fare tutto ciò e basta passare l'indirizzo all'iVar e il nuovo valore, ma ciò richiede comunque l'override del setter.
Qualche idea? Se fa la differenza, è per un'app per iPhone.
Si prega di segnalare un errore tramite http://bugreport.apple.com/ chiedendo la possibilità di sovrascrivere @synthesize. Copia l'URL di questa pagina o solo il contenuto della tua domanda. Grazie. – bbum