0
Objective-C中使用Swizzling。为方便起见,我们使用CoconutKit的辅助方法来实现这一目标:Swizzling - 在Objective-C中使用Swizzling的撤消方法选择器iOS
HLSSwizzleSelectorWithBlock_Begin([TMObjectCache class], @selector(objectForKey:))
^(TMObjectCache *self, NSString *key) {
key = nil;
return ((id (*)(id, SEL, NSString*))_imp)(self, _cmd, key);
}
HLSSwizzleSelectorWithBlock_End;
我们想然而,也未调配后的代码某种意义上说,这一方法。有没有办法做到这一点?
“混乱是令人难以置信的危险,脆弱,主要用于调试,应在生产代码中强烈避免”除非Cocoa会高兴地将它背在背后。 :( – matt
是的;但是做KVO的人可以访问源代码,并且所有的苹果开发者都知道不会打破KVO,他们对于你的swizzles没有同样的担心(当然KVO是isa-swizzling,而不是方法 - 你知道一个苹果应用的方法 - 我忘记了吗?) –
我认为KVO是我想到的主要方法;正如你所说,它不是方法混合,但我仍然认为它怀疑(虽然我不得不使用它) – matt