gpt4 book ai didi

ios - 多个 NSString 声明和初始化

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:01:31 25 4
gpt4 key购买 nike

我是 ios 开发的新手。我正在检查 NSString 并且我发现它使用多种方式超过了

1) NSString *theString = @"hello";

2) NSString *string1 = [NSString stringWithString:@"This is"];

3) NSString *string =[[NSString alloc]init];
string =@"你好";

现在我对以上三个感到困惑,想知道它们之间的区别?

最佳答案

是的,这三种都是创建字符串的方法......我试着一一解释给你。

有人认为您必须记住,在 Objective-c 中,字符串由 @"" 表示。双引号后面的都是字符串,例如@"Hello" 就是string@"" 基本上是创建 NSString 的字面意思。

  1. NSString *theString = @"hello";

编辑:

在这条语句中,我们创建了一个 NSString 常量。 Objective-C 字符串常量在编译时创建,并存在于程序的整个执行过程中。

2. NSString *string1 = [NSString stringWithString:@"This is"];

再次在这条语句中,我们创建了一个 NSStringautorelease 对象,但这里是幻灯片差异。比第一种情况。这里我们使用另一个 NSString 对象来创建一个新的 NSStringautorelease 对象。所以通常我们使用 stringWithString 方法,当我们已经有了 NSString 对象并且我们想要另一个具有相似内容的 NSString 对象。

3. NSString *string =[[NSString alloc]init];
string =@"Hello";

在这里,在第一个语句中,您正在创建一个您拥有的 NSString 对象,您有责任在完成后释放它(在 non-ARC 代码中)与这个对象。第二条语句与案例 1 类似,通过字符串文字创建字符串对象。但是当你把这两个语句放在一起时它会导致你内存泄漏(在非ARC代码中),因为在语句一中你正在分配 & initiating 新字符串对象的内存,紧接着在第二条语句中,您再次将新字符串对象分配给相同的字符串引用。

关于ios - 多个 NSString 声明和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21985731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com