我来自Java的Objective-C。我收集字符串是:为什么@目标C
NSString *greeting = @"Hello";
什么我不知道是为什么。我还需要@
符号,而不仅仅是:
NSString *greeting = "Hello";
我似乎无法找到这个答案。
我来自Java的Objective-C。我收集字符串是:为什么@目标C
NSString *greeting = @"Hello";
什么我不知道是为什么。我还需要@
符号,而不仅仅是:
NSString *greeting = "Hello";
我似乎无法找到这个答案。
随着@"Hello"
你得到一个NSString
文字,一个对象。随着"Hello"
你得到一个C字符串文字。类似地,有特殊语法创建NSArray
,NSDictionary
和NSNumber
文字:
// Instantiate an array with objects a, b, c
NSArray *myArray = @[a, b, c];
// Instantiate a dictionary (a map) with k1, k2, k3 as keys and o1, o2, o3 a
NSDictionary *myDictionary = @{k1: o1, k2: o2, k3: o3};
// Instantiate a number with int 1234
NSNumber *myNumber = @1234;
"Hello"
是C字符串表达式或炭的换句话说数组c。 @"Hello"
是类NSString
的实例。
所以,这将是正确的:
NSString *greeting = @"Hello";
char *greeting2 = "Hello";
-C是C的真实超集为“你好”是指C构建体(字符,又名C-字符串的数组c),它必须在Objective-C中也可以使用。为了将C-Strings从NSString对象中分离出来,需要一个符号来允许在编译期间创建文字。
其实@
-symbol用于整个目标C从C.区分目标C相关的东西(@selector()
,@[]
,@{}
,@try/@catch/@finally
)
因为使用了所有的其他字符。 (这与电子邮件地址中使用'@'的原因相同。) –
另请参阅http://stackoverflow.com/questions/25749/what-does-the-symbol-represent-in-objective-c – rmaddy