Si desea registrar envíos de mensajes desde el código de su aplicación, el -forwardingTargetForSelector: tip es parte de la solución.
Envuelva su objeto:
@interface Interceptor : NSObject
@property (nonatomic, retain) id interceptedTarget;
@end
@implementation Interceptor
@synthesize interceptedTarget=_interceptedTarget;
- (void)dealloc {
[_interceptedTarget release];
[super dealloc];
}
- (id)forwardingTargetForSelector:(SEL)aSelector {
NSLog(@"Intercepting %@", NSStringFromSelector(aSelector));
return self.interceptedTarget;
}
@end
Ahora hacer algo como esto:
Interceptor *i = [[[Interceptor alloc] init] autorelease];
NSFetchedResultsController *controller = [self setupFetchedResultsController];
i.interceptedTarget = controller;
controller = (NSFetchedResultsController *)i;
y usted tendrá un registro de mensajes envía. Tenga en cuenta que los envíos enviados desde dentro del objeto interceptado no serán interceptados, ya que se enviarán usando el puntero "propio" del objeto original.
Probablemente significó @selector (release), no @selector (dealloc) –
Sí, quise decir @selector (release). Esto me encanta y lo pego de algún código que desató dealloc, pero no quería mostrarlo en el ejemplo, porque hay algunos problemas especiales para hacerlo. Fijo. –
@LouisGerbarg ¿Puede por favor publicar un enlace a su fuente original que se liberó? – funroll