私は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];
ここに何かガイダンスはありますか?