2013-05-17 68 views
1

我對Objective-C非常陌生,但我在C/C++方面經驗豐富,所以有些東西看起來很奇怪。我正在閱讀顯示Objective-C基礎知識的教程,作者警告我忘記在我的字符串之前包含@。所以,例如初始化一個字符串,爲什麼需要`@`?

"Hello" VS @"Hello"

但是,筆者並沒有解釋爲什麼@需要還是什麼的語法意義。這就是我現在要問的,@是做什麼的?

回答

12

這是一個NSString文字。沒有@,你會創建一個char *,這不是像NSString這樣的對象。

3

Objective-C是C的超集,所以你應該知道"hello"是一個C字符串(const char *)。

@"hello"是不同的,它是NSString *NSString是ObjC對象,您可以將消息發送給它並使用類似對象。你不能用C字符串。

例如,來自這兩個字符串長度得到:

NSString *objcStr = @"hello"; 

int len = [objcStr length]; 

const char * cStr = "hello"; 

len = strlen(cStr); 
+2

你甚至可以做這樣的事情:'NSUInteger len = [@「Hello」length];'。 – rmaddy

0

採用@指定所特有的目標C和不在原C.在這種情況下,如果你想要一個客觀特徵C NSString對象作爲文字,您使用@否則您最終會得到不是Objective C對象而是原始C實體的不同類型的字符串。

相關問題