字符串前@符号的用途?

Jum*_*hyn 9 iphone objective-c

我一直在使用Objective-C一段时间,但从来没有真正理解所有字符串之前@符号的用途是什么.例如,为什么必须声明这样的字符串:

NSString *string = @"This is a string";
Run Code Online (Sandbox Code Playgroud)

而不是这样的:

NSString *anotherString = "This is another string";
Run Code Online (Sandbox Code Playgroud)

就像你用Java或许多其他编程语言一样.有充分的理由吗?

Ben*_*Ben 12

它表示NSString(而不是标准C字符串)

NSString是一个存储unicode字符串的Object,它提供了一堆方法来协助操作.

一个C字符串只是一个\ 0终止的字符串(字节).

编辑:好的理由是Objective-C建立在C之上,C语言结构需要仍然可用.@""是一个Objective-c唯一的扩展名.

  • 当你在ObjC中看到@之前的一个@时,这是一个好的迹象,它是ObjC对C. @interface,@ implementation,@ prototocol,@ selector,@ class等的扩展的一部分.@是非正式的Objective-C命名空间.它类似于Cocoa中的所有内容都以'NS'为前缀,因此它不会与其他正在发生的事情发生冲突. (4认同)