4

可能重复:
我是否需要释放使用@“...”生成的 NSString?

在 Objective C 中有两种创建 NSString obj 的方法

方式一:

// string1 will be released automatically 

NSString* string1 = [NSString string]; 

// must release this when done 

方式二

NSString* string2 = [[NSString alloc] init]; 

[string2 release];

如果我做

NSString *string = @"This is a string";

我的问题是上述声明属于哪种方式,毕竟我们应该释放它

4

4 回答 4

8

字符串常量不会被释放;它们既没有明确发布也没有自动发布;它们只是常量,永远不会被释放。

因此,只有在您之前保留它们时才释放它们。

于 2012-05-07T13:23:59.580 回答
2

在第一个和最后一个中,您不拥有(分配和初始化)字符串,因此不要释放它们。而在第二个中,您手动分配了它,因此您必须释放它。如果您在代码中使用对象,则应使用第二个,否则使用第一个或最后一个

于 2012-05-07T13:27:55.807 回答
2

如果您使用的是 ARC,则string = nil; 根本不应该释放它,但是不,您不需要释放它

于 2012-05-07T13:28:44.393 回答
1

如果你alloc是它,那么你应该release它。

static通过类似方法创建的字符串

[NSString stringWithXXXX];

auto released

@H2CO3 关于常数是正确的。

于 2012-05-07T13:29:36.843 回答