gpt4 book ai didi

objective-c - NSString 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 17:31:04 25 4
gpt4 key购买 nike

据我所知,v03 示例创建了一个我拥有的对象,并且最终必须释放该对象。我想知道的是前两个(v_01 和 v02)之间有什么区别,或者它们本质上是相同的吗?

// Version_01
userName = @"Teddy";

// Version_02
userName = [NSString stringWithString:@"Gary"];

// Version_03
userName = [[NSString alloc] initWithString:@"Caroline"];
... some code
[userName release];

加里

最佳答案

它们都很相似,但三者之间有一些细微的差别。

第一个是指向字符串常量的指针。字符串Teddy存储在只读存储器中,userName是指向该字符串常量的指针。您不需要(也不能)保留或释放该对象,因为它“永久”存在(即在程序运行期间)。

第二个是一个自动释放字符串对象,其内容为Gary。当返回给您时,它的释放计数为 0。它可以根据需要保留和释放。

第三个与第二个类似,但它不是自动释放的,因此当它最初返回给您时,它的保留计数为1。与第二个一样,它可以根据需要保留和释放。

关于objective-c - NSString 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1784222/

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