我對Objective-C非常陌生,但我在C/C++方面經驗豐富,所以有些東西看起來很奇怪。我正在閱讀顯示Objective-C基礎知識的教程,作者警告我忘記在我的字符串之前包含@
。所以,例如初始化一個字符串,爲什麼需要`@`?
"Hello"
VS @"Hello"
但是,筆者並沒有解釋爲什麼@
需要還是什麼的語法意義。這就是我現在要問的,@
是做什麼的?
我對Objective-C非常陌生,但我在C/C++方面經驗豐富,所以有些東西看起來很奇怪。我正在閱讀顯示Objective-C基礎知識的教程,作者警告我忘記在我的字符串之前包含@
。所以,例如初始化一個字符串,爲什麼需要`@`?
"Hello"
VS @"Hello"
但是,筆者並沒有解釋爲什麼@
需要還是什麼的語法意義。這就是我現在要問的,@
是做什麼的?
這是一個NSString
文字。沒有@
,你會創建一個char *
,這不是像NSString
這樣的對象。
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);
採用@
指定所特有的目標C和不在原C.在這種情況下,如果你想要一個客觀特徵C NSString
對象作爲文字,您使用@
否則您最終會得到不是Objective C對象而是原始C實體的不同類型的字符串。
你甚至可以做這樣的事情:'NSUInteger len = [@「Hello」length];'。 – rmaddy