2010-06-01 78 views
3

我有一个可行的方法的类,我已经测试,但Xcode中仍然引起了该方法的警告:为什么不能找到警告消失的方法?

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

没有“initWithCoordinate:标题”的方法发现了什么?

回答

4

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

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

一个匿名类“扩展”您现有的类:

如果不使用类实现之外的方法,你可以在你的.m文件的顶部创建一个匿名类的声明新的方法。由于您在源文件(.m)中声明了它,而不是头文件(.h),因此只有在该源文件中进行编码时才可见。

+0

我相信“匿名类别”实际上被称为“扩展名” – user102008 2012-01-24 03:02:43

+0

Apple称之为匿名类别,而不是扩展 – 2012-01-24 07:51:57

+0

请参阅https://developer.apple.com/library/mac/ #文档/可可/概念/的ObjectiveC /章节/ ocCategories.html – user102008 2012-01-25 00:59:19

4

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

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

+0

我是否需要在头文件中声明每个方法?如果它仅在本级内使用,该怎么办? – TheLearner 2010-06-01 13:00:37

+0

就像菲利普莱伯特说的那样。该死的,我太慢了;-) – 2010-06-01 13:13:18