Sco*_*len 8 iphone objective-c nsstring
NSString *myString = @"sample string";
NSString *newString = [myString copy];
Run Code Online (Sandbox Code Playgroud)
如果我在这两行之后设置断点,myString的指针与newString的指针相同.
WTF?是不是NSString副本应该返回一个指向新对象的指针?或者我错过了关于副本应该如何工作的基本内容?
既然NSString是不可变的很可能就是在内部增加ref count,并用它做.
当你使用release其中一个NSStrings时,它可能会减少ref count- 标准内存管理.
你觉得有什么问题吗?
想一想:NSMutableString是一个子类NSString.当您的财产被声明为NSString,您不希望它改变.
考虑一下,如果你曾经使用过,retain而有人给你一个NSMutableString,然后再改变它,你的课就会被打破.
但是,您可能会认为总是copy很慢.所以NSString的copy根本要求retain.NSMutableString的copy做一个实际的副本.
通常最好给吐出一个,NSString *因为人们不必一直复制它.
| 归档时间: |
|
| 查看次数: |
9281 次 |
| 最近记录: |