Dao*_*yen 2 runtime objective-c nsdictionary ios
我在运行时尝试使用NSDictionary的objectForKey:交换实现,但没有任何改变!
#import "NSDictionary+Utils.h"
#import <objc/runtime.h>
@implementation NSDictionary (Utils)
+ (void)load
{
method_exchangeImplementations(class_getInstanceMethod(self, @selector(objectForKey:)),
class_getInstanceMethod(self, @selector(_objectForKey:)));
}
- (id)_objectForKey:(id)aKey
{
NSLog(@"ok");
id obj = [self _objectForKey:aKey];
if ([obj isEqual:[NSNull null]]) {
return nil;
}
return obj;
}
@end
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么?
谢谢你读了我可怜的英语.
NSDictionary是一个类集群.你永远不会处理NSDictionary的直接实例; 相反,字典总是某些NSDictionary子类的实例.因此,您正在交换一种您永远不会打电话的方法.
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |