ios – OCMock方法名称冲突

ios – OCMock方法名称冲突,第1张

概述我是OCMock的新用户,所以也许我只是在这里遗漏一些简单的东西.这段代码不编译: id mockSession = [OCMockObject mockForClass:[AVCaptureSession class]];[[mockSession expect] addOutput:[OCMArg anyPointer]]; 错误是 Multiple methods named 'addO 我是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.如果我希望AVCaptureSession上不同的方法在AVAssetReader中不存在,那么它将编译.我没有成功尝试以下.它编译,但崩溃.

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];

任何指导这里?

解决方法 在变量为“ID”但是在不同类中声明不同签名的方法的情况下,您应该通过将对象转换为正确的类型来帮助编译器.
[((AVCaptureSession *)[mockSession expect])  addOutput:[OCMArg any]];

在任何一种情况下,如果参数是一个对象,如您所见,您应该使用any而不是任何Popter.但是你已经知道了一个. 总结

以上是内存溢出为你收集整理的ios – OCMock方法名称冲突全部内容,希望文章能够帮你解决ios – OCMock方法名称冲突所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1097657.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存