NSDictionary的objectForKey方法hook咨询

近日,有需求需要hook NSDictionary的objectForKey方法,而使用theos直接hook该方法不能成功,而该类中的valueForKey方法却能hook成功,代码如下:
%hook NSDictionary

  • (id)valueForKey:(NSString *)key{
    id value = %orig(key);
    NSLog(@“NSDictionary -------> valueForKey: %@”, key);
    return value;

}

  • (id)objectForKey:(id)aKey{
    id value = %orig(aKey);
    NSLog(@"__NSCFDictionary -------> objectForKey: %@", aKey);
    return value;
    }
    %end

另外, 在ios 9 上,通过hook __NSCFDictionary类中的objectForKey方法可以达到上述需求,然而在ios 11上面该代码却不好使,无法成功。

我的问题是,如何能成功hook类NSDictionary中的objectForKey方法呢,而该方法与其他方法有什么区别导致无法hook成功呢?