我正在学习Objective-C。你能告诉我这些 NSString 声明之间有什么区别(如果有的话)吗?
NSString *firstString;
firstString = @"First string";
NSString *secondString = [NSString string];
secondString = @"Second string";
我正在学习Objective-C。你能告诉我这些 NSString 声明之间有什么区别(如果有的话)吗?
NSString *firstString;
firstString = @"First string";
NSString *secondString = [NSString string];
secondString = @"Second string";
第二个创建两个字符串,并在不使用它的情况下将第一个扔掉。在这一行:
NSString *secondString = [NSString string];
您正在创建一个新字符串,这并不是真正有用,因为它是空的,并且您将其分配给secondString
. 然后,您将不同的字符串 ( @"Second String"
) 分配给secondString
.
没有必要这样做。无论哪种情况,您都可以编写:
NSString *myString = @"MyString";
该语法@"Some string here"
称为字符串文字,它是在代码中指定具有实际值的 NSString 的简写。
最终结果没有区别。
第一个字符串被声明,然后通过字符串文字语法分配一个值(你也可以NSNumbers
从 Xcode 4.4 开始执行此操作)。
第二个被初始化为一个字符串(空),然后被分配另一个 NSString 对象。在这种情况下,实际上创建了两个 NSString 对象,前者 -[NSString string]
被后者覆盖@"string value"
所以,第一个是nil
开始,然后有一个价值。第二个有一个实例化的NSString
对象开始,然后被覆盖。
最后两个字符串对象是相同的,但显然你在第二种情况下浪费资源。