一、深拷贝和浅拷贝
1、对于系统的非容器类对象
如果对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝)。
如果是对可变对象复制,都是深拷贝,但copy返回的对象是不可变的。
1、对于系统的非容器类对象
如果对一不可变对象复制,copy是指针复制(浅拷贝)和mutableCopy就是对象复制(深拷贝)。
如果是对可变对象复制,都是深拷贝,但copy返回的对象是不可变的。
二、分类category
分类可以将类的定义模块化到相关方法的组货分类中。提供了扩展现有类定义的简便方式,并不必访问的源代码,也无需创建子类。
1、分类可以访问原始类的实例变量,单不能添加新的变量。如果需要可以考虑创建子类。
2、分类可以重载类中的方法,但会导致原方法不可用。
3、分类中的方法可以不用都实现。
三、协议protocol
协议跟java中的接口一样,可使类实现多态。
@protocol NSCoping
-(id)copyWithZone:(NSZone *)zone;
@end
协议不引用任何类,它是无类,一个类遵循一个协议,其子类也遵循。
四、合成对象
定义一个包含其他类的一个或多个对象的技术。