2011-05-28 64 views
0

时的警告我已经创建了一个UIViewController类别,以便我的每个UIViewControllers都有一个错误处理方法。 Unfortunatey现在每当我打电话从类别我得到在Xcode中以下警告此方法:如何摆脱在我的代码中使用XCode类别

'MainWindowViewController' may not respond to '- (...method name...):' 

我们试图让我们的代码没有任何警告,所以我不知道是否有任何聪明的办法来保持范畴,并得到摆脱如果“可能不响应”警告”。

感谢您的帮助!

回答

8

导入您的类被声明为在从该类别的方法是使用应消除警告实现文件的标题。

+0

我可能只是添加了可以将头类别头文件导入到应用程序的预编译头文件中,从而使类别在应用程序范围内可用。 – TheBlack 2011-05-28 10:57:58

0

@Vladimir是对的,你需要在你的实现类中导入头文件。

有可能是你的代码的编译过程中得到警告一个理由,

,如果你不声明在头文件中的方法,但落实在实现文件

0

弗拉基米尔是当然,是正确的。向类中添加一个类别使这些函数可用于该类的所有实例,无论头文件是否为#import。 Objective-C是一种动态语言。

但是,编译器会警告您在编译时无法看到这些消息的声明。该代码可能仍然有效;这就是为什么它会提出警告而不是错误。

我喜欢将类别导入需要该类别提供的扩展的类。我觉得这是提醒我依赖性的有用方法。然而,一些程序员认为,因为一个类为类的所有实例提供了方法,所以将它添加到一个类中是毫无意义的。

如果您不想将类别导入到每个使用它的类中,但是您希望将类别标题清空编译到pch文件中,

0

尝试重新启动XCode并清理。我有同样的问题,肯定包括头文件,但仍然收到警告。重新启动并清理固定它。

0

当其他所有事情都明智无法解决问题时,请在违规行下方的新行重新输入违规呼叫。

您可能会发现编译器对新行感到满意。删除旧的行。 (让你走HMMM的东西?)

我发现这种情况不止一次发生在xcode(和其他编辑器)上。当其他的都失败时再次输入该行。

+0

这很有趣,但我不确定这是问题的答案。 – 2013-06-04 20:11:08

+0

重新阅读主题我可以看到我的回答并未真正解决问题。但是,它确实解决了有时出现的问题,它与原来的“为什么编译器会在某些.m中抱怨类别方法而不是其他问题,即使我已经包含该类别。h,确保通话写入正确,甚至重新启动xcode?“然后是时候尝试在另一条线路上重新输入呼叫。 – 2013-06-05 20:44:17