gpt4 book ai didi

iphone - NSMutableString 与 NSString 的用法?

转载 作者:可可西里 更新时间:2023-11-01 05:06:32 25 4
gpt4 key购买 nike

我对 NSStringNSMutable 字符串用法感到困惑。假设我在类中声明了实例变量一和二,如下所示:

NSString *one;
NSMutableString *two;

让我们假设我已经使用属性创建了它们的 setter 和 getter。

假设我已经像这样更改了我的“两个”字符串:

     1. [two appendString:@"more string"];
2. two = @"string"
3. self.two = @"string"

问题:

  1. 第一行会释放之前的字符串并分配新对象并为其赋值。如果是,那么这是否意味着在这种情况下不需要创建 getter 和 setter?或者不需要在 NSMutablestring

  2. 中创建属性
  3. 在这种情况下,之前分配的字符串对象会被释放吗?

  4. 肯定会释放第一个对象,因为我们在这里调用 setter。这段代码是否必要,或者我们可以只使用代码行 2 来分配字符串。

现在关于 NSString:也可以像这样修改字符串:

    one = [one stringByAppendingString:@" more string"];
self.one = [one stringByAppendingString:@" more string"];

使用 NSMutablestringNSString 哪个更好?

抱歉发了这么长的帖子,但我需要理解这些概念。

最佳答案

对于你问题的第一部分:

  1. 几乎绝对不是。我希望内存将被动态分配,而不是释放和重新分配。

  2. 如果之前的回答是no,那么这次也是no。

  3. 第二个和第三个选项甚至不适用于警告 Incompatible pointer types assigning NSMutableString to NSString

我预计 NSMutableString 在内存方面会稍微高效一些,因为您在早期表明程序可能需要动态内存。 NSString 很可能被分配了一个大小合适的内存块。

您对 NSMutableString 的看法似乎是 NSString 的 stringBy.. 方法将执行的操作:

使用 NSString 及其 stringBy... 方法,您可以创建新对象、释放旧对象(如果需要)并使新对象自动释放。 (请注意,如果您从非自动释放更改为自动释放,您的 dealloc 中可能有一个不再需要的释放)

关于iphone - NSMutableString 与 NSString 的用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049729/

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