为啥我会看到以下警告:“将假定没有匹配方法签名的消息返回 'id' 并接受 '...' 作为参数”?

Posted

技术标签:

【中文标题】为啥我会看到以下警告:“将假定没有匹配方法签名的消息返回 \'id\' 并接受 \'...\' 作为参数”?【英文标题】:Why am I seeing the following warning: "Messages without a matching method signature wii be assumed to return 'id' and accept'...'as arguments "?为什么我会看到以下警告:“将假定没有匹配方法签名的消息返回 'id' 并接受 '...' 作为参数”? 【发布时间】:2009-11-10 10:26:31 【问题描述】:

在编写下面的代码时,我收到了警告:“没有机加工方法签名的消息被假定返回 'id' 并接受'...'作为参数”

ViewSlider *viewSlider=[[ViewSlider alloc]init];
[viewSlider slideView:view1 secondView:view2]; 

【问题讨论】:

你能发布你的 slideView 方法吗? 【参考方案1】:

可能是因为方法相关

[viewSlider slideView:view1 secondView:view2];

不会出现在 ViewSlider 的头文件中。

【讨论】:

在这种情况下,消息将类似于“viewSlider 可能不会响应 slideView”【参考方案2】:

就像 unforgiven 说的,你可能想在头文件中声明它。这样,编译器在您使用它时就知道该消息。

在 Objective-C 中你仍然可以发送消息,即使编译器不知道它。但是如果编译器不知道它,它就不得不做出一些假设。就像返回类型和它的参数类型一样。这就是警告的目的:“嘿,看,你可以发送我从未听说过的 slideView:secondView: 消息,但我只是假设它会返回一些对象并接受任何作为参数的对象。”

【讨论】:

【参考方案3】:

您是否已将 .m 文件中的文件导入...??? 如果不是,则在 .m 文件中声明 view1 & view2 的文件。 这可能会有所帮助。

【讨论】:

以上是关于为啥我会看到以下警告:“将假定没有匹配方法签名的消息返回 'id' 并接受 '...' 作为参数”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到 JDBC 驱动程序警告和 ThreadLocal 错误?

为啥我会收到来自 FxCop 的 InitializeReferenceTypeStaticFieldsInline 警告?

为啥我会收到带有 std::bind() 的“本地临时返回地址”警告?

为啥我会从“double”转换为“float”,可能会丢失数据警告?(c)

为啥在 C# 10 中我会在初始化属性上收到编译器警告/错误 CS8618

为啥我会收到警告:当 mysql-python 安装成功时,找不到与“MANIFEST”、“ChangeLog”、“GPL”匹配的文件