Se si desidera registrare le mandate dei messaggi dal proprio codice applicazione, the -forwardingTargetForSelector: tip fa parte della soluzione.
Avvolgete il vostro oggetto:
@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
Ora fare qualcosa di simile:
Interceptor *i = [[[Interceptor alloc] init] autorelease];
NSFetchedResultsController *controller = [self setupFetchedResultsController];
i.interceptedTarget = controller;
controller = (NSFetchedResultsController *)i;
e si avrà un log di messaggio manda. Nota, le mandate inviate dall'interno dell'oggetto intercettato non verranno intercettate, poiché verranno inviate utilizzando il puntatore "auto" dell'oggetto originale.
Probabilmente intendevi @selector (release), non @selector (dealloc) –
Sì, volevo dire @selector (release). Questo mi piace e lo incollo da un codice che ha ingannato dealloc, ma non volevo mostrarlo, ad esempio, perché ci sono alcuni problemi particolari nel farlo. Fisso. –
@LouisGerbarg Potete per favore pubblicare un link alla vostra fonte originale che ha rilasciato il rilascio? – funroll