所以,只是一个简单的问题,何时应该使用副本而不是使用保留。我试图从互联网上看,但没有完全明白。那么有人可以照亮我吗?客观C复制并保留
Q
客观C复制并保留
7
A
回答
27
当你想保证对象的状态时,你会使用copy
。
NSMutableString *mutString = [NSMutableString stringWithString:@"ABC"];
NSString *b = [mutString retain];
[mutString appendString:@"Test"];
在这一点上,b被第三条线弄乱了。
NSMutableString *mutString = [NSMutableString stringWithString:@"ABC"];
NSString *b = [mutString copy];
[mutString appendString:@"Test"];
在这种情况下,b是原始字符串,并且不会被第3行修改。
这适用于所有可变类型。
+4
值得注意的是,许多不可变类型将通过调用-retain来实现-copy;由于它们的价值永远不会改变,所以在内存中拥有两个副本是没有意义的。也就是说,如果没有进一步的信息,你应该总是编码,就好像你不知道一个特定的对象是否是可变的。仅仅因为你输入你的属性为NSString并不意味着有人不会将一个NSMutableString传递给它(如上图所示)。 – ipmcc
3
如果您不希望在不知道的情况下收到的值发生变化,则复制功能非常有用。例如,如果您有一个属性为NSString
,并且您设置该字符串一旦设置就不会更改,则需要使用复制。否则,某人可以通过您NSMutableString
并更改该值,从而更改NSString
的基础值。 NSArray
和NSMutableArray
也是一样,除了数组上的副本只是将所有指针引用复制到新数组中,但会阻止删除和添加条目。
7
相关问题
- 1. 客观c泄漏NSNumber被保留
- 2. 客观c-NSDictionary保留对象问题
- 3. 复制shell脚本并保留权限
- 4. 保留计数并复制二传手?
- 5. 复制HTML并保留事件
- 6. objective-c保留,分配和复制?
- 7. iPhone,方法返回+1保留计数的客观c对象
- 8. @property并保留,分配,复制,非原子Objective-C
- 9. EXC_BAD_ACCESS复制或保留块
- 10. 复制并粘贴我的xib文件并保留参考
- 11. 客观的C系列,保持独特
- 12. 在客观C++
- 13. 客观C - 排列重复计算
- 14. 只保留观察连续
- 15. 客观C:制作点长按
- 16. 复制不覆盖并保留扩展名的现有文件
- 17. Windows批处理文件复制并保留副本
- 18. 从.xib复制到.storyboard并保留IBOutlet连接
- 19. 复制Sharepoint文件夹并保留权限
- 20. VB:将Excel单元复制到Word并保留Excel格式
- 21. 将div内容复制到新窗口并保留样式?
- 22. 从Word复制并在Redactor II中保留格式
- 23. 如何从Kindle PC复制代码并保留格式
- 24. 复制的图像,并保留其EXIF/IPTC数据与PHP imageCreateFromJpeg?
- 25. 如何克隆/复制模型实例并保留其关联?
- 26. 在Python中复制文本并保留/查找特殊字符
- 27. 如何复制UIElement并保留布局/渲染信息?
- 28. CentOS7:复制文件并保留SELinux上下文
- 29. shared_ptr的/客观-C
- 30. '||'在客观的C?
[NSString property:copy or retain?](http://stackoverflow.com/questions/387959/nsstring-property-copy-or-retain)或[Objective C Assign Copy Copy Retain](http:/ /stackoverflow.com/questions/4510913/)或[保留自动释放对象的副本](http://stackoverflow.com/questions/6416963/)或[何时使用保留和何时使用副本](http:// stackoverflow .com/questions/4087208 /)或[@property:Retain or copy?](http://stackoverflow.com/questions/5616170/)或[许多其他](http://stackoverflow.com/search?q= %5Bobjc%5D + copy + retain) –
在这个问题的辩护中,其他人都是特定于财产类型,但是,这个问题已经被问了很多。 –