1

谁能告诉我两者的区别

NSString* string;

NSString* string = [NSString string];
4

3 回答 3

3

就像在 C 中一样,

NSString *string;

声明变量(指针)string但不给它任何值。这意味着在初始化变量之前,您不能使用该变量,例如通过执行string = @"foo";.

笔记:

  • 如果这是一个实例变量,它实际上会被自动初始化——到nil.
  • 如果您在代码中的某处使用变量而没有在每个可能的分支if条件等)中初始化它,那么编译器会抱怨。为避免这种情况,您可以将其设置为空字符串或nil开始。

线

NSString *string = [NSString string];

使用类的+string方法NSString创建一个空字符串。你也可以使用@"".

(进一步说明:我建议使用NSString *string而不是,NSString* string因为前者隐藏了语法特质:NSString *string1, *string2;是在一行上声明多个指针变量的正确方法。)

于 2012-10-17T19:44:53.277 回答
2

NSString *字符串;

第一个您刚刚声明将有一个NSString名为的变量string,但不会对其进行初始化。

当您希望字符串包含由某个条件确定的一系列值中的一个时,您可能会这样做:

NSString *string;

if (condition) {
    string = @"This condition";
} else {
    string = @"That condition";
}

NSString *string = [NSString 字符串];

第二次您执行上述所有操作,以及将string变量初始化为空字符串的附加步骤。

当您希望字符串包含特定的单个值时,您可以这样做:

NSString *string = @"There are no conditions"
于 2012-10-17T19:43:45.247 回答
1
NSString *string;

创建一个指针,但不创建一个字符串对象(实例)。根据编译器选项的位置,它可能会初始化为 nil 或不初始化。换句话说,它为指向NSString机器人无NSString对象的指针创建了一个位置(内存存储)。

NSString *string = [NSString string];

创建一个空字符串对象(实例)和一个指向它的指针。

于 2012-10-17T19:44:25.323 回答