Quiero crear un método como este:objetivo-c: ¿doble punteros a la propiedad no permitidos?
- (void) checkAndUpdateStringProperty: (NSString **) property{
if (...)
*property = @"whatever";
}
quiero usar esto para pasar en una propiedad de la misma clase:
- (void) somewhereElse{
....
[self checkAndUpdateStringProperty: &self.productName];
}
Pero esto da un error de sintaxis, diciendo "Dirección de expresión de propiedad solicitada ". ¿Alguna razón por qué? Si se sustituye la propiedad de clase con una variable local, que funciona bien:
- (void) somewhereElse{
NSString *name = nil;
[self checkAndUpdateStringProperty: &name];
}
la excepción a acceder a Ivars propiedad está directamente en '' dealloc' init' y donde la clase no está en una forma totalmente completa y cualquier efecto secundario podría ser un problema. – zaph
Buen punto, actualizado. –
Gracias. Realmente descubrí que (dado que este era un NSManagedObject) podía pasar el nombre de la propiedad y acceder al valor usando valueForKey, y configurarlo dentro del método 'check' usando setValue: forKey: No era necesario hacer la indirección de doble puntero . –