IOS API中的“错误”

原创
2013/05/09 15:47
阅读数 209

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

copy何时使用:http://my.oschina.net/lych0317/blog/127832

异常情况:

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

展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部