有关未找到或未声明的方法的编译器警告

时间:2011-12-21 16:15:44

标签: objective-c cocoa-touch compiler-warnings

我已经开始在iOS 5中使用(ARC)了,但是我经常遇到一个问题。

第一种情况:

[[cell viewWithTag:999] setTextColor:[UIColor blackColor]];

此行导致问题:

  

实例消息的接收者类型'UIView'未声明具有选择器'setTextColor:'的方法。

第二种情况:

[delegate setForTheFirstTime:TRUE];

此行导致问题:

  

没有已知的选择器'setForTheFirstTime:'的实例方法。

当我使用委托时,我遇到很多这样的问题。

要解决这两个问题,我必须使用像performSelector:这样的方法吗?

2 个答案:

答案 0 :(得分:2)

您只需要将'delegate'声明为正确的类型,这将要求您导入该类型的标头。编译器需要知道您的委托对象理解'setForTheFirstTime:'并且编译器需要该方法的声明。

在使用viewWithTag:的第一种情况下,您需要将结果转换为正确的类,以便编译器可以知道'setTextColor:'方法。

假设这个视图是UILabel:

[(UILabel*)[cell viewWithTag:999] setTextColor:[UIColor blackColor]];

答案 1 :(得分:0)

viewWithTag方法返回一个UIView对象。因此,当您调用setTextColor方法时,接收器是UIView,并且UIView没有setTextColor方法。您必须将对象转换为正确的类。在这里你想要一个UILabel。