摘要: 在开发过程中我们经常会遇到对象拷贝的问题,下面我们分别讨论赋值操作、对象拷贝、以及浅拷贝(Shallow copy)与深拷贝(Deep copy)的区别与各自的实现方式。一、不同对象的赋值操作Objective-C中有两类对象,一类是结构体(或者基本数据类型也算),另一类是NSObject对象。对于结构体,代码直接会操作其实体,因此赋值操作会创建一个源对象的副本(一个新的对象);而对于NSObject对象,必须使用指针来操作对象,所以其赋值操作相当于复制了指针,而非对象,也就是说赋值操作使得源指针和新指针都指向同一个NSObject对象。这样讲有些难以理解,请看下面的代码:[plain] vi 阅读全文
posted @ 2013-12-23 14:59 菁菁工作室 阅读(309) 评论(0) 推荐(0) 编辑
摘要: dealloc里面释放对象#if DEBUG #define MCRelease(x) [x release] #else #define MCRelease(x) [x release], x = nil #endif //use dlog to print while in debug model#ifdef DEBUG# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);#else# define DLog(...)#end 阅读全文
posted @ 2013-12-23 14:09 菁菁工作室 阅读(220) 评论(0) 推荐(0) 编辑