2012-03-27 86 views
6

我注意到Xcode(或更確切地說是Apple LLVM編譯器?)不再需要前向方法聲明。換句話說,下面的代碼生成無警告:從什麼時候Xcode不再需要轉發方法聲明,爲什麼?

@implementation Foo 

-(void) foo { 
    [self bar]; 
} 

-(void) bar {} 

@end 

這種用完就扔在-foo警告說,Foo可能不-bar迴應,對不對?編譯器現在更聰明還是這是別的?我使用Xcode 4.3.1和Apple LLVM編譯器3.1。

+0

你確定你沒有在'@interface Foo'的頭文件中包含'bar'聲明嗎? – hamstergene 2012-03-27 07:41:21

+0

確實很確定。 – zoul 2012-03-27 08:47:57

回答

0

在我的XCode 4.2中,警告仍然存在,此外,啓用ARC時,這是一個錯誤,而不僅僅是一個警告。

+0

如果您在同一個文件中調用並實現該方法,則不適用。如果他從另一個文件中完成了[foo bar],那麼會出錯,但在上面的情況下似乎很好。 – jrturton 2012-03-27 07:48:28

+0

@jrturton我在同一個文件中執行了它,它仍然是一個錯誤。 – hamstergene 2012-03-27 07:49:47

+2

試試4.3?我也注意到了這一點,我認爲這是一個編譯器功能 – jrturton 2012-03-27 07:51:01

相關問題