对于NSString,我们可以使用
NSString * str = [[NSString alloc] initWithString:@“hi”]
NSString * str = [NSString stringWithString:@“hi”];
NSString * str = @“hi”;
有人请以第3点的形式告诉我,是否拥有@“hi”?我是说清理时是否需要[str release]?
由于
第1点,是的,我需要;对于第2点,不,我不
对于第3点?
答案 0 :(得分:3)
不,你不需要发布它。
字符串文字(这是案例3中的内容)是在编译时创建的,它们的生命周期是应用程序的生命周期。您还可以轻松检查释放/保留操作是否不影响其保留计数(尝试使用NSLog retainCount属性,您将看到)
答案 1 :(得分:2)
了解每个案例并应用标准内存管理规则:
+alloc
方法,因此您拥有此对象。您必须释放或自动发布它。+alloc
,+new
或-copy
方法。您没有此对象,因此您的代码不应该释放它。请注意,不是将字符串文字视为魔术对象,如果您以与任何其他对象完全相同的方式对待它们并且应用与所有权和内存管理完全相同的规则,那么您的代码将起作用。