2010-05-24 53 views
2

爲什麼編譯時沒有任何錯誤或警告?重複的方法名稱 - Objective-c

@interface ObjectTest : NSObject { 

} 
-(void)iAmADoubleMethod; 
-(void)iAmADoubleMethod; 
@end 

@implementation ObjectTest 
-(void)iAmADoubleMethod { 
    NSLog(@"IAmADoubleMethod"); 
} 
@end 

我在一個正在處理的項目中遇到了這個問題。我來自C++背景,所以我想我至少會得到一個警告。我不僅希望知道它遵守的原因,但是這個代碼是否會導致任何問題?

謝謝。

+0

我會把它作爲評論,因爲我不確定它是否正確,但是:我相信這是有效的,因爲C標準說只要只有一個定義就可以有任何數量的聲明。例如,你可以在許多文件中聲明一個int x,但是你只能在一個地方爲變量定義空間。 – 2010-05-24 23:50:06

回答

10

你只是聲明方法兩次。聲明不衝突,所以它不是問題。這與在普通的C或C++程序中多次聲明一個函數是一樣的。

+0

我以爲是,+1 – 2010-05-24 23:53:01

+0

謝謝,也許有一天我會讀標準。可能不會 :) – NixonsBack 2010-05-25 16:05:29