0

我已经看到了一些答案,但这些答案还不够扩展,我认为它们是在引入 ARC 之前。

所以如果我有两个 NSSstring 我可以设置

string1 =string2;

或者

NSString * a1=@"String";
al=@"Lead";

不会导致内存泄漏或其他问题?

编辑:视图控制器或委托属性设置为(复制,非原子)怎么样?

Edit2:它应该是 NSString *al=@"String"。我希望这不会改变它不会泄漏的想法。

4

3 回答 3

1

不,分配和重新分配字符串文字不会导致内存泄漏。当不使用 ARC 并分配使用allocretain、或以 . 为前缀的方法时copy,您只需要担心内存泄漏。mutableCopynew

NSString a1=[@"String" mutableCopy];  
al=@"Lead";//This will cause a leak since you called copy above.

有关详细信息,请参阅高级内存管理规则

于 2012-08-13T20:49:28.463 回答
0

也不会在 ARC 中泄漏。

但是,您可能想知道在这种情况下您正在处理引用 - 不执行隐式复制(除非您使用复制或复制限定属性)。

编辑:视图控制器或委托属性设置为(复制,非原子)怎么样?

NSStrings? 是的,copy应该是NSStrings 的默认值。nonatomic应该是一切的默认值。当然,也有例外——当您可能偏离默认值时。

于 2012-08-13T21:00:05.233 回答
0

您的代码是安全的,不会泄漏。Cocoa 和 NSStrings 非常聪明地处理这些问题。

由于 NSString 是不可变的,因此您最终可能会发生其他有趣的事情,如果您尝试担心指针本身,您可能会感到奇怪。但是您的示例不受这些问题的影响。

于 2012-08-13T20:49:18.580 回答