gpt4 book ai didi

objective-c - 为类的所有实例模拟 OCMock 中的方法

转载 作者:太空狗 更新时间:2023-10-30 03:45:17 25 4
gpt4 key购买 nike

我想使用 OCMock 为一个类的所有实例模拟一个实例方法,但是我没有类的实例来覆盖它,而是在我正在测试的方法中创建它。

所以我的问题是:是否可以为类的所有实例覆盖此方法,或者我是否需要将该实例注入(inject)方法而不是在方法内部创建它?

[[ClassThatHasTheInstanceMethodToOverride andCall:@selector(callThisMethodInstead) onObject:self] someInstanceMethod];

最佳答案

我最终通过这组方法到达了那里:

方法 originalMethod = nil;方法 swizzleMethod = nil;

#import <objc/runtime.h>

....

- (void) swizzleInstanceMethodForInstancesOfClass:(Class)targetClass selector:(SEL)selector
{
originalMethod = class_getInstanceMethod(targetClass, selector);
swizzleMethod = class_getInstanceMethod([self class], selector);
method_exchangeImplementations(originalMethod, swizzleMethod);
}

- (void) deswizzle
{
method_exchangeImplementations(swizzleMethod, originalMethod);
swizzleMethod = nil;
originalMethod = nil;
}

关于objective-c - 为类的所有实例模拟 OCMock 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10432253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com