Chr*_*ner 1 cocoa memory-management objective-c
我很好奇以下代码的内存分配.
NSString *myString = [NSString string];
Run Code Online (Sandbox Code Playgroud)
我知道这将创建一个自动释放的空字符串, @""
当我打电话时会发生什么
myString = @"Hello world";
Run Code Online (Sandbox Code Playgroud)
我的引用是否与提供的自动释放对象相同,NSString或者我只是分配了一个我负责释放的新对象?
当想知道你是否拥有一个物体时,问问自己:
我用来创建这个对象的方法......
new?alloc?copy?retain?如果您对其中任何一个回答"是",那么您负责调用release或autorelease返回返回的对象.(请注意,Core Foundation对象的规则略有不同.另请注意,文档明确说明与此相矛盾的任何内容都会获胜.文档始终取代指南)
对于您的字符串,您所有问题的答案都是"否",因此您不对该对象负责.常量字符串(样式@"foo")被硬编码到应用程序二进制文件中,无法解除分配.然而,这是一个实现细节.只要您遵循内存管理规则,您就会很好!
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |