Como sobrescrever um método na classe do framework (tempo de execução)

problema:
O framework armazenará em cache os dados da imagem quando acima:

[UIImage imageNamed:]

Eu não quero que o cache aconteça, então eu posso substituí-lo por

[UIImage imageOfContentOfFile:]

Parece resolvido, mas depois dos meus testes, no progresso de instanciação do xib, o framework usaimageNamed: ao invés deimageOfContentOfFile.
Ou seja, as imagens carregadas pelo xib ainda são armazenadas em cache.

Então eu tento substituir o método imageNamed: da UIImage, faço todo esse método NÃO CACHE.

--try1. categoria:

@implementation UIImage (ImageNamedNoCache)

+ (UIImage *)imageNamed:(NSString *)name; 
{
    NSString* path = [[NSBundle mainBundle] pathForResource:name ofType:nil];
    return [UIImage imageWithContentsOfFile:path];
}

@end

--result: warning "A categoria está implementando um método que também será implementado por sua classe primária"

--try2. o tempo de execução substitui o imp do método

    //get super method
Method method_imageNamed = class_getClassMethod([UIImage class], @selector(imageNamed:));

//get my method
Method method_myImageNamed = class_getClassMethod([self class], @selector(myImageNamed:));

//get my imp
IMP imp_myImageNamed = method_getImplementation(method_myImageNamed);

//set super method's imp to my imp
method_setImplementation(method_imageNamed, imp_myImageNamed);

--resultado estes também tentam apenas trabalhar quandoEu invoco [UIImage imageNamed:]
mas a instanciação do xib não funciona.

me ajude, obrigado

questionAnswers(4)

yourAnswerToTheQuestion