为啥我会看到以下警告:“将假定没有匹配方法签名的消息返回 '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”匹配的文件