NSString类型声明

时间:2012-08-21 14:30:28

标签: objective-c nsstring

我正在学习Objective-C。你能告诉我这些NSString声明之间的区别(如果有的话)吗?

NSString *firstString;
firstString = @"First string";

NSString *secondString = [NSString string];
secondString = @"Second string";

2 个答案:

答案 0 :(得分:8)

第二个创建两个字符串,并在不使用它的情况下抛出第一个字符串。在这一行:

NSString *secondString = [NSString string];

你正在创建一个新的字符串,它不是很有用,因为它是空的,你将它分配给secondString。然后,您将不同的字符串(@"Second String")分配给secondString

没有必要这样做。在任何一种情况下,你都可以写:

NSString *myString = @"MyString";

语法@"Some string here"被称为字符串文字,它是在代码中指定具有实际值的NSString的简写。

答案 1 :(得分:1)

最终结果没有区别。

正在声明第一个字符串,然后通过字符串文字语法分配一个值(从Xcode 4.4起,您也可以使用NSNumbers执行此操作。)

第二个被初始化为字符串(空),然后被分配另一个NSString对象。在这种情况下,实际上创建了两个NSString对象,前者[NSString string]被后者覆盖@"string value"

所以,第一个是nil开始,然后有一个值。第二个有一个实例化的NSString对象,然后被覆盖。

最后两个字符串对象是相同的,但显然你在第二种情况下浪费资源。