Objective c 为什么赢了';“方法未找到”警告是否会消失?

Objective c 为什么赢了';“方法未找到”警告是否会消失?,objective-c,iphone,Objective C,Iphone,我有一个类的方法可以工作,我已经测试过了,但是xcode仍然对该方法发出警告: MapPoint *mp = [[MapPoint alloc] initWithCoordinate:[newLocation coordinate] title:[locationTitleField text]]; 找不到“initWithCoordinate:title”方法?我无法说明您的具体情况(MapPoin

我有一个类的方法可以工作,我已经测试过了,但是xcode仍然对该方法发出警告:

MapPoint *mp = [[MapPoint alloc] initWithCoordinate:[newLocation coordinate] 
                                              title:[locationTitleField text]];

找不到“initWithCoordinate:title”方法?

我无法说明您的具体情况(MapPoint是框架类吗?),但您应该确保在导入的头文件中声明该方法


如果是这种情况,并且警告仍然存在,请尝试完全重建(清除+生成)。XCode有时有点奇怪。

正如Johannes所说,应该在类的头文件中声明方法

如果未在类实现之外使用该方法,则可以在.m文件的顶部创建匿名类别声明:

@interface MapPoint()
- (id) initWithCoordinate:(MapCoordinate *)coordinate title:(NSString *)title;;
@end

匿名类别使用新方法“扩展”现有类。由于您是在源文件(.m)中声明它,而不是在头文件(.h)中声明它,因此只有该源文件中的代码才能看到它。

是否需要声明头文件中的每个方法?如果它只在课堂上局部使用呢?正如菲利普·莱伯特所说的那样。该死,我太慢了;-)我相信“匿名类别”实际上被称为“扩展”,苹果称之为匿名类别,而不是扩展