2012-10-01 26 views
6

我很驚訝當下列方法定義編譯(使用蘋果LLVM 4.1):Objective-C的方法的語法

- (void) testMethod:someArgument { 

} 

通知someArgument類型缺失。 Objective-C中關於指定方法參數類型的規則是什麼?

回答

7

默認參數類型是id。即使是這樣,編譯:

- testMethod:someArgument { 
} 

這是需要一個id作爲它的參數並應返回一個id的方法。

事實上,甚至沒有方法名是必要的:

- :someArgument { 
} 

這可以被稱爲:

[self :someObject]; 

當然,所有的這是非常不好的做法和你應該始終指定類型(和名稱)。

+0

有趣!我更喜歡Objective-C,更加了解' - :v {}'編譯:-) – SundayMonday

+2

我拒絕回答任何使用類似方法的問題:-D – DrummerB

+1

如果您正在尋找編譯的最短方法,那很可能'-a {}';-) – DrummerB

1

Objective-C的編程語言tells us

對於Objective-C中的面向對象的結構如方法 返回值,ID替換INT作爲默認數據類型。 (對於嚴格的 C構造,如函數返回值,int仍然是默認的 類型。)