IOSCopy什么时候用?-创新互联

在O-C里面有个值对象的概念,当你新定义一个属性是值对象时就应该用copy来修饰。那么都什么对象是值对象呢?

创新互联是一家以网络技术公司,为中小企业提供网站维护、成都网站制作、成都网站设计、网站备案、服务器租用、空间域名、软件开发、微信小程序等企业互联网相关业务,是一家有着丰富的互联网运营推广经验的科技公司,有着多年的网站建站经验,致力于帮助中小企业在互联网让打出自已的品牌和口碑,让企业在互联网上打开一个面向全国乃至全球的业务窗口:建站电话联系:18982081108

值对象是指封装了基本值(属于 C 数据类型)且提供与该值相关的服务的对象。值对象以对象形式表示标量类型。Foundation 框架向您提供了以下类(这些类产生对象,用于字符串、二进制数据、日期与时间、数字以及其他值):

  • NSString和NSMutableString

  • NSData和NSMutableData

  • NSDate

  • NSNumber

  • NSValue


异常情况:

  API中对NSArray做为属性时也用copy而不是retain。到底怎么回事?我有点晕,所以就又查了文档

When you declare instances of the value classes as properties, you should use the copy option. 将值类的实例声明为属性时,应该使用 copy 选项。
  意思是值对象应该用copy而不是只有值对象用copy。

我又查了copy和retain的区别。

  copy: 建立一个索引计数为1的对象,然后释放旧对象(两个指针)
  retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1(一个指针)

  也就是说,retain是指针拷贝,copy是内容拷贝

那么为什么API中的NSArray用的是copy呢?

  其实已经很明显了,就是防止外界对其进行修改。

所以用copy还是retain没有绝对的界限,要看需求了。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:IOSCopy什么时候用?-创新互联
文章地址:http://hbruida.cn/article/ehjhe.html