我想对NSString声明进行澄清/区别。考虑以下代码:
NSString *str = @"string";
NSString *str = [NSString stringWithFormat:@"string"];
NSString *str = [[NSString alloc] initWithString:@"string"];
谁能帮助我了解上述三种字符串声明之间的区别?区别在于内存还是其他原因?我已经遍历各种帖子以了解差异,但是我无法理解确切的差异。
斯里
最佳答案
编辑(感谢评论):
使用ARC,编译器使用第一条语句创建一个字符串,该字符串在应用程序的生存期内可访问,并且永远不会释放。
最后两个语句产生相同类型的字符串。
使用手动内存管理,第二条语句产生一个自动释放的字符串。
最后一个产生保留的字符串。这意味着,使用最后一条语句时,您将不得不在代码的后面添加一个发行版。
关于ios - 澄清NSString方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34308448/