如何在Objective-C中声明一个字符串?

31

如何将简单字符串"test"声明为变量?

3个回答

50

一个 C 字符串就像在 C 语言中一样。

char myCString[] = "test";

NSString 使用 @ 字符:

NSString *myNSString = @"test";

如果需要管理NSString的内存:

NSString *myNSString = [NSString stringWithFormat:@"test"];
NSString *myRetainedNSString = [[NSString alloc] initWithFormat:@"test"];

或者,如果您需要一个可编辑的字符串:

NSMutableString *myMutableString = [NSMutableString stringWithFormat:@"test"];

你可以从 苹果 NSString 文档 中阅读更多内容。


NSString和char有什么不同? - powtac
4
char是C语言中的本地类型,而NSString/NSMutableString则是Cocoa/Objective-C中用于管理字符串的类。它们与普通的C字符串(char数组)没有太多关系。要开始学习,请查阅一些基本的Objective-C文档。 - Carl Norum
1
@powtac,@ 是 Objective-C 语法的一部分。在这种情况下,它表示字符串字面量是一个 NSString,而不是常规的 C 风格字符串字面量。 - Carl Norum

46
NSString *testString = @"test";

那就是我一直在寻找的答案。虽然Carl Norum的回答非常详细。 - powtac
1
答案在Carl Norum的回答中已经清楚地解释了。@"aString"会生成一个NSString对象。而"aString"则是一个C字符串,它只是一个字符数组。 - Andrew Madsen
为什么我们在使用字符串变量时必须使用指针,而NSInteger可以不用声明指针呢?例如 NSInteger one = 1 - Tomas
在Objective-C中,NSString是一个对象,而NSInteger是一种原始类型。对象总是分配在堆上,而原始类型可以分配在栈上。最重要的是,字符串有指针的原因是对象是通过引用传递的,而原始类型是通过值传递的。 - Jeff Kelley

12

标准的字符串赋值可以这样完成:

NSString *myTestString = @"abc123";

除了基本的分配外,使用NSString类时会获得许多你在标准Char[]数组中得不到的方法。这就是为什么面向对象编程更好的原因!

例如,仅用一行代码填充字符串以包含HTML网页的内容。

创建和初始化字符串。

+ string
 init
 initWithBytes:length:encoding:
 initWithBytesNoCopy:length:encoding:freeWhenDone:
 initWithCharacters:length:
 initWithCharactersNoCopy:length:freeWhenDone:
 initWithString:
 initWithCString:encoding:
 initWithUTF8String:
 initWithFormat:
 initWithFormat:arguments:
 initWithFormat:locale:
 initWithFormat:locale:arguments:
 initWithData:encoding:
+ stringWithFormat:
+ localizedStringWithFormat:
+ stringWithCharacters:length:
+ stringWithString:
+ stringWithCString:encoding:
+ stringWithUTF8String:

从文件创建和初始化字符串

+ stringWithContentsOfFile:encoding:error:
 initWithContentsOfFile:encoding:error:
+ stringWithContentsOfFile:usedEncoding:error:
 initWithContentsOfFile:usedEncoding:error:

从URL创建和初始化字符串

+ stringWithContentsOfURL:encoding:error:
– initWithContentsOfURL:encoding:error:
+ stringWithContentsOfURL:usedEncoding:error:
– initWithContentsOfURL:usedEncoding:error:

如果你需要一个可以编辑其缓冲区的字符串,你需要看一下:

NSMutableString

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接