Estoy creando una clase base que tiene un indicador isDirty
. Se establece cada vez que una de sus propiedades cambia, pero como es una clase base, no sabe cuáles son sus propiedades. Así que, básicamente, en cada subclase, tengo que anular cualquier - set:
método para algo como esto:¿Puedo omitir el funcionamiento de @synthesize en Objective C?
- (id) setName:(NSString *)value {
if ([name isEqualToString:value]) {
return;
}
[name autorelease];
name = [value retain];
isDirty = YES; //Here's the important bit
}
casi todas las líneas de eso es lo que el colocador sintetizado automáticamente haría. ¿Hay alguna manera de que pueda anular lo que realmente crea @synthesize
?
Hay otras opciones que se me han ocurrido, pero todas parecen ser mucho más lentas en tiempo de ejecución que este método. He pensado en cosas como agregar un objeto para observar sus propios cambios de propiedad, o crear una función genérica para hacer todo eso y simplemente pasar la dirección al iVar y el nuevo valor, pero eso todavía requiere anular el setter.
¿Alguna idea? Si hace una diferencia, es para una aplicación de iPhone.
Por favor, presente un error a través de http://bugreport.apple.com/ solicitando la posibilidad de anular @synthesize. Copie la URL a esta página o solo el contenido de su pregunta. Gracias. – bbum