我已经看到了一些答案,但那些答案还没有扩大,我认为它们是在ARC被引入之前。
所以,如果我有两个NSSstring,我可以设置
string1 =string2;
或
NSString * a1=@"String";
al=@"Lead";
没有造成内存泄漏或其他问题?
编辑:如何设置视图控制器或委托属性(复制,非原子)?
Edit2:它应该是NSString * al = @“String”。我希望这不会改变它不泄漏的想法。
答案 0 :(得分:1)
不,分配和重新分配字符串文字不会导致内存泄漏。在不使用ARC并指定使用alloc
,retain
,copy
,mutableCopy
或前缀为new
的方法时,您只需担心内存泄漏
NSString a1=[@"String" mutableCopy];
al=@"Lead";//This will cause a leak since you called copy above.
有关详细信息,请参阅Advance Memory Management Rule。
答案 1 :(得分:0)
您的代码是安全的,不会泄漏。 Cocoa和NSStrings非常聪明地处理这些问题。
你最终可能会遇到其他有趣的事情,因为NSStrings是不可变的,如果你试图担心指针本身就会变得怪异。但是你的例子不会受到这些问题的影响。
答案 2 :(得分:0)
也不会泄漏ARC。
但是,您可能想知道在这种情况下您正在处理引用 - 不执行隐式复制(除非您使用复制或复制限定属性)。
编辑:如何设置视图控制器或委托属性(复制,非原子)?
for NSString
s?是的,copy
应该是NSString
的默认值。 nonatomic
应该是所有内容的默认值。当然,也有例外 - 当你可能偏离默认值时。