2012-02-29 65 views
2

這兩個相同嗎?爲什麼你會用另一個呢?方法實現結束時的分號

-(void)someMethod; { stuff }

-(void)someMethod { stuff }

+0

到回答的前兩個:它實際上是有效的語法,編譯器和運行時不會抱怨。我正在閱讀一本關於編程的書,所有的例子都用分號來實現,這是我以前從未見過的。因此這個問題;我知道這很奇怪。 – johnbakers 2012-02-29 09:45:41

+0

我站好了。它確實看起來不對,但如果它起作用,它就會起作用。我不太瞭解Objective-C是否是正確的語法。它不是一種廣泛使用的語言,所以我想很多都是編譯器實際接受的。 – 2012-02-29 09:51:56

+1

它當然有效,但我認爲這是一個歷史神器。它不受Apple的鼓勵。 – JeremyP 2012-02-29 10:10:09

回答

1

正確答案是喬什 - 卡斯威爾:

這是語法上有效的;來自NeXT時代的一種奇怪的神器。

0

-(void)someMethod;是方法的聲明和-(void)someMethod { stuff }是其實施。

如果您希望它們在類的外部可見並且實現應該用實現文件(例如MyClass.m)編寫,則應在頭文件(例如,MyClass.h)中寫入方法聲明。我不認爲-(void)someMethod; { stuff }是可能的。

+0

查看我添加到我的問題的評論 – johnbakers 2012-02-29 09:46:26

+0

它在語法上有效;來自NeXT時代的一種奇怪的神器。 – 2012-02-29 19:24:47

1

第一個看起來錯了。通常,在您的.h文件中,你會碰到這樣的:

-(void)someMethod; 

而在.m文件你會:

-(void)someMethod { stuff } 

也許第一個是約一些剪切和粘貼的結果操作,編譯器才接受它。

+0

看到我添加到我的問題的評論 – johnbakers 2012-02-29 09:46:43