谁能告诉我两者的区别
NSString* string;
和
NSString* string = [NSString string];
就像在 C 中一样,
NSString *string;
声明变量(指针)string
但不给它任何值。这意味着在初始化变量之前,您不能使用该变量,例如通过执行string = @"foo";
.
笔记:
nil
.if
条件等)中初始化它,那么编译器会抱怨。为避免这种情况,您可以将其设置为空字符串或nil
开始。线
NSString *string = [NSString string];
使用类的+string
方法NSString
创建一个空字符串。你也可以使用@""
.
(进一步说明:我建议使用NSString *string
而不是,NSString* string
因为前者隐藏了语法特质:NSString *string1, *string2;
是在一行上声明多个指针变量的正确方法。)
第一个您刚刚声明将有一个NSString
名为的变量string
,但不会对其进行初始化。
当您希望字符串包含由某个条件确定的一系列值中的一个时,您可能会这样做:
NSString *string;
if (condition) {
string = @"This condition";
} else {
string = @"That condition";
}
第二次您执行上述所有操作,以及将string
变量初始化为空字符串的附加步骤。
当您希望字符串包含特定的单个值时,您可以这样做:
NSString *string = @"There are no conditions"
NSString *string;
创建一个指针,但不创建一个字符串对象(实例)。根据编译器选项的位置,它可能会初始化为 nil 或不初始化。换句话说,它为指向NSString
机器人无NSString
对象的指针创建了一个位置(内存存储)。
NSString *string = [NSString string];
创建一个空字符串对象(实例)和一个指向它的指针。