博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS API中的“错误”
阅读量:6272 次
发布时间:2019-06-22

本文共 517 字,大约阅读时间需要 1 分钟。

hot3.png

之前看文档时发表了一篇关于copy何时使用的博客,今天竟然发现API中异常情况。

copy何时使用:

异常情况:

    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没有绝对的界限,要看需求了。

转载于:https://my.oschina.net/lych0317/blog/129276

你可能感兴趣的文章
Google FireBase - fcm 推送 (Cloud Messaging)
查看>>
BBS论坛(二十七)
查看>>
html DOM 的继承关系
查看>>
装饰器的邪门歪道
查看>>
Dubbo常用配置解析
查看>>
【转】C#解析Json Newtonsoft.Json
查看>>
macports的安装及常用命令
查看>>
(转)使用C#开发ActiveX控件
查看>>
spring mvc 基于注解 配置默认 handlermapping
查看>>
半小时学会上传本地项目到github
查看>>
Android学Jni/Ndk 开发记录(一)
查看>>
Linux Tcl和Expect的安装
查看>>
WPF中的依赖项属性(转)
查看>>
linux防火墙相关 iptables
查看>>
最简单的单例模式
查看>>
JPopupMenu的使用以及JPopupMenu中子组件的事件处理
查看>>
从反汇编的角度看引用和指针的区别
查看>>
拓马长枪定乾坤
查看>>
UIProgressView的详细使用
查看>>
Silverlight实用窍门系列:70.Silverlight的视觉状态组VisualStateGroup
查看>>