2013-01-17 67 views
1

可能重複:
Semicolon after the method name in Objective-C implementation file我們應該刪除;在Objective-C的執行結束

我注意到,這兩個

- (void)encodeWithCoder:(NSCoder *)aCoder; 
{ 

} 

- (void)encodeWithCoder:(NSCoder *)aCoder 
{ 

} 

作品。

使用;雖然有點尷尬。爲什麼有;作品超越了我。在C++中不起作用

事情是something;應該等於something{};因此something ;{}應該等於something {};{}這是錯誤的。

例如,如果(真)a = b;與if(true){a = b}相同;

回答

3

編譯器忽略分號,這隻發生在函數名稱上。當人們嘗試將函數名稱從.h(接口)複製到.m(實現)文件時,會發生這種情況。我也在使用objective c 。

2

布拉德·拉爾森說,在his answer here

是的,這是可以接受的語法來做到這一點。

事實上,我總是做這在我的實現,因爲它是那麼微不足道 複製和從接口的方法定義粘貼到 實施,反之亦然,而無需記住您 是。這有助於我在單獨的行上使用對齊的括號。

同樣,Yuji states

語法上它是確定把一個分號那裏。它沒有任何用途, ,它不鼓勵這樣做。有些編譯器會給出關於 這個額外分號的警告。

C/C++/Java處理一個;作爲語句的結尾,所以每當編譯器發現它將其視爲行結束。

編輯:

if(true) a=b;是相同的與if(true){a=b};

這些不能與以上相比較。 a=b是必須以分號終止的表達式。因此,if(true) a=b;是正確的。 if(true){a=b;}是正確的。但是if(true) {a=b};不是,{和}使得包含非終止表達式的塊產生語義錯誤,所以編譯器說錯誤。

+1

不,這是錯誤的,即使您添加;然後寫{},功能起作用! –

+1

與功能不同! –

+0

改變你的答案:) –

2

是,

- (void)encodeWithCoder:(NSCoder *)aCoder; 
{ 

} 

- (void)encodeWithCoder:(NSCoder *)aCoder 
{ 

} 

都具有相同的含義。

其實編譯器會忽略;如果存在功能

後,即使你寫

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 
{ 

} 

它的作品!

相關問題