Si uso objc_setAssociatedObject/objc_getAssociatedObject dentro de una implementación de categoría para almacenar una variable de instancia simulada en un método setter, ¿cómo accedería a la clave en el método getter ya que cualquier variable declarada en el método setter estaría fuera del alcance del método getter ?¿Cómo uso objc_setAssociatedObject/objc_getAssociatedObject dentro de un objeto?
Edit: Para aclarar, si tuviera que usar el siguiente patrón, ¿dónde debería declarar STRING_KEY para poder usarlo tanto en el método setter como getter?
@interface NSView (simulateVar)
-(void)setSimualtedString:(NSString *)myString;
-(NSString *)simulatedString;
@end
@implementation NSView (simulateVar)
-(void)setSimualtedString: (NSString *)myString
{
objc_setAssociatedObject(self, &STRING_KEY, myString, OBJC_ASSOCIATION_RETAIN);
}
-(NSString *)simulatedString
{
return (NSString *)objc_getAssociatedObject(self, &STRING_KEY);
}
@end
la respuesta anterior hace referencia inicialmente a un enlace a Apple Docs que ya no existe. [Aquí] (https://github.com/alexzielenski/ZKRevealingTableViewCell/blob/master/vendor/ZKRevealingTableViewCell.m) es un ejemplo que ilustra la respuesta arriba, aunque no está en un contexto de categoría setter/getter. Si alguien tiene un mejor ejemplo, por favor comparte! Por alguna razón, el tema de los objetos asociados no se cubre ampliamente en la web. – abbood
Creo que este es un excelente ejemplo de lo que el OP está preguntando: https://github.com/mystcolor/AFNetworking-ProxyQueue/blob/master/AFHTTPClient%2BProxyQueue.m#L149 – qix
Otra buena tecla es un selector - He estado usando esto por un tiempo, leí sobre esto en algún blog (¿Mike Ash? ¿Mattt Thompson?). –