本篇文章给大家谈谈深入解析iOS内存管理:浅拷贝(Shallow Copy)技术详解,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
2、在Objective-C中,复制操作可以通过copy和mutableCopy两种方法进行,其中copy是获取不可变对象,mutableCopy是获取可变对象。
3.并且这两个方法分别调用copyWithZone和mutableCopyWithZone来执行复制操作。类必须实现copyWithZone 或mutableCopyWithZone 才能执行复制或mutableCopy。
如图:
二、浅拷贝代码实现
浅复制的方法有很多种。当您执行浅复制时,保留消息将被发送到原始集合。此时引用计数会+1,指针会被复制到新的集合中。
NSArray*shallowCopyArray=[someArray copyWithZone:nil];
NSDictionary*shallowCopyDict=[[NSDictionary alloc] initWithDictionary:someDictionary copyItems:NO];
注意:如果集合中的对象遵循NSCopying协议,则对象将被深度复制到新集合中。如果对象不遵循NSCopying 协议并尝试使用此方法执行深复制,则会在运行时出现错误。
三、浅拷贝、深拷贝、完全拷贝区别:
* 浅复制:在浅复制操作过程中,复制的对象的每一层都是指针复制。
* 深拷贝(一级深拷贝):深拷贝操作时,被拷贝的对象至少有一层是深拷贝。
* 全拷贝(实深拷贝):全拷贝操作时,被拷贝对象的每一层都是一个对象副本。
四、系统对象的拷贝
无论是集合对象还是非集合对象,在接收copy和mutableCopy消息时,都遵循以下准则:
copy 返回一个不可变对象(immutable);因此,如果使用可变对象接口作为复制返回值,则会崩溃;
【深入解析iOS内存管理:浅拷贝(Shallow Copy)技术详解】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于找到讲解浅复制的文章了!
有18位网友表示赞同!
我刚从浅拷贝转深拷贝回来,好多纠结。
有11位网友表示赞同!
iOS开发真是学无止境啊, 新概念还得不断学习!
有6位网友表示赞同!
这篇文章内容是不是面向初学者?感觉我有点看不懂。
有16位网友表示赞同!
浅拷贝真挺常用的,以后要记住这篇笔记了!
有5位网友表示赞同!
内存管理是iOS开发的门槛啊,必须认真搞清楚。
有8位网友表示赞同!
之前写项目的时候遇到过内存泄漏的问题,不知道跟浅拷贝有没有关系?
有15位网友表示赞同!
希望能看到更多详细的例子,更能理解。
有10位网友表示赞同!
最近在学习Swift,这篇文章挺有帮助!
有14位网友表示赞同!
浅拷贝和深拷贝的区别确实挺大的,需要好好消化。
有11位网友表示赞同!
希望作者后面还能讲讲深度复制的文章!
有5位网友表示赞同!
这篇分析很到位了, 我对内存管理有了更深的理解!
有6位网友表示赞同!
看标题就知道是关于iOS开发高级知识的了。
有18位网友表示赞同!
我收藏了这篇博客,方便以后回头参考。
有5位网友表示赞同!
这种类型的文章还是应该多点作者写写!
有15位网友表示赞同!
浅拷贝经常出现内存泄漏的问题,这个需要注意!
有12位网友表示赞同!
iOS开发越来越难了我,这些知识都是必须掌握的。
有12位网友表示赞同!
感觉这篇博文很专业,写的比较清晰易懂!
有15位网友表示赞同!
要理解浅拷贝,先了解一下对象是怎样复制的?
有11位网友表示赞同!