2010-06-01 75 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