问题描述
||
在我的代码中,我已经通过UIViewController创建了一个Category,因此我的每个UIViewControllers都有一个错误处理方法。现在不幸的是,每当我从类别中调用此方法时,我都会在XCode中收到以下警告:
\'MainWindowViewController\' may not respond to \'- (...method name...):\'
我们试图使我们的代码没有任何警告,所以我想知道是否存在任何聪明的方法来保留类别并摆脱“是否可能不响应”警告。
谢谢你的帮助!
解决方法
将声明了类别的标头导入到使用该类别的方法的实现文件中,应消除该警告。
, @Vladimir是正确的,您需要在实现类中导入头文件。
在编译代码期间可能会收到警告的另一个原因,
如果您没有在头文件中声明方法,而是在实现文件中实现
, 弗拉基米尔当然是正确的。在类中添加类别将使这些函数可用于该类的所有实例,而不管头文件是否为“ 1”。 Objective-C是一种动态语言。
但是-编译器警告您在编译时看不到这些消息的声明。该代码可能仍然有效;这就是为什么它会发出警告而不是错误的原因。
我喜欢将类别导入到需要该类别提供的扩展名的类中。我发现它是一种提醒我依赖的有用方法。但是,一些程序员认为,由于类别为类的所有实例提供了其方法,因此仅将其添加到一个类是没有意义的。
如果您不想将类别导入到使用该类别的每个类中,但是希望进行干净的编译-将类别标题添加到pch文件中,则为1。
, 尝试重新启动XCode并进行清洁。我有同样的问题,肯定包含头文件,但仍然收到警告。重新启动并清洁固定。
, 如果其他所有明智的方法都无法解决问题,请在违规行正下方的新行中重新键入违规呼叫。
您可能会发现编译器对新行感到满意。删除旧行。 (让您迈入HMMM的事情?)
我发现使用xcode(和其他编辑器)会多次发生这种情况。当所有其他方法均失败时,再次键入该行。