Как переопределить метод в классе фреймворка (время выполнения)
problem:
Framework будет кэшировать данные изображения, когда выше:
[UIImage imageNamed:]
Я не хочу, чтобы кэширование происходило, поэтому я могу заменить его на
[UIImage imageOfContentOfFile:]
Кажется решенным, но после моих тестов, в инстанцированном прогрессе xib, фреймворк используетimageNamed: скорее, чемimageOfContentOfFile.
То есть изображения, загруженные с помощью xib, все еще кэшируются.
Поэтому я пытаюсь переопределить метод imageIId: метод UIImage, чтобы все эти методы НЕ кэшировались.
--try1. category:
@implementation UIImage (ImageNamedNoCache)
+ (UIImage *)imageNamed:(NSString *)name;
{
NSString* path = [[NSBundle mainBundle] pathForResource:name ofType:nil];
return [UIImage imageWithContentsOfFile:path];
}
@end
--result: warning. & quot; Категория реализует метод, который также будет реализован его основным классом & quot;
--try2. runtime replace the method's imp
//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);
--result
они тоже стараются работать только когдаI invoke [UIImage imageNamed:]
но создание экземпляра xib не работает.
помоги мне спасибо