? Una de las características del tiempo de ejecución del Objective C moderno (64 bits OS X e iPhone OS) es la capacidad de sintetizar dinámicamente ivars sin declararlas explícitamente la clase:¿Cuál es el mecanismo subyacente para la síntesis de ivar en el tiempo de ejecución de Objective C moderno
@interface MyClass : NSObject {
// NSString *name; unnecessary on modern runtimes
}
@property (retain) NSStrng *name;
@end
@implementation MyClass
@synthesize name;
@end
en un poco de mi código que utilice implementaciones getter personalizados para inicializar las propiedades:
- (NSString *) name {
if (!name) {
name = @"Louis";
}
return name;
}
lo anterior es incompatible con Ivars sintetizados ya que necesita tener acceso a una una ivar que no es declar ed en el encabezado. Por diversas razones, me gustaría actualizar varios de mis marcos personales para utilizar ivars sintetizados cuando se construyen en los tiempos de ejecución modernos, el código anterior debe modificarse para que funcione con ivars sintetizados con el fin de lograr ese objetivo.
Mientras que la documentación de Objective C 2.0 indica que los accesadores sintetizados en el tiempo de ejecución moderno sintetizarán el ivar en el primer uso. No especifica qué mecanismo de bajo nivel se usa para hacer esto. ¿Lo hace class_getInstanceVariable(), se han aflojado las restricciones en class_addIvar(), es una función no documentada en el tiempo de ejecución objetivo C 2.0? Si bien podría implementar mi propio almacenamiento lateral para los datos que respaldan mis propiedades, preferiría usar el mecanismo que utilizan los adaptadores sintetizados.
estaría muy impresionado si tienes una respuesta a esta – Shawn