我是 OCMock 的新用户,所以也许我只是在这里遗漏了一些简单的东西。此代码无法编译:
id mockSession = [OCMockObject mockForClass:[AVCaptureSession class]];
[[mockSession expect] addOutput:[OCMArg anyPointer]];
错误是
Multiple methods named 'addOutput:' found with mismatched result, parameter type or attributes
AVCaptureSession 上方法 addOutput 的签名如下
- (void)addOutput:(AVCaptureOutput *)output
据我所知,问题在于方法 addOutput 存在于 AVCaptureSession 和 AVAssetReader 类中。AVAssetReader 上 addOutput 的方法签名如下。
- (void)addOutput:(AVAssetReaderOutput *)output
显然编译器认为我的mockSession是一个AVAssetReader,但我不知道为什么它选择那个类而不是AVCaptureSession。如果我期望在 AVAssetReader 上不存在的 AVCaptureSession 上使用不同的方法,那么它会编译。我尝试了以下但没有成功。它编译,但崩溃。
id mockSession = [OCMockObject mockForClass:[AVCaptureSession class]];
[(AVCaptureSession*)[mockSession expect] addOutput:[OCMArg anyPointer]];
此代码也无法编译,与上一个错误相同
id mockSession = [OCMockObject mockForClass:[AVCaptureSession class]];
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[[mockSession expect] addOutput:output];
这里有什么指导吗?