oop思想和 对象的拷贝

oop思想

       OOP(Object Oriented Programming)是一种编程思想,将对象作为程序的基本单元,将程序和数据封装其中,用以提高软件的重用性、灵活性和扩展性。基本概 念中包括对象、类、数据抽象、继承、动态绑定、封装、多态、消息传递等。

  面向对象的三大特性是:封装、继承和多态

   1: 封装属性与细节、公开接口

   2:oc只支持单继承(即只有一个父类,默认是NSobject)

   3: 同一基类的不同子类可以通过重载父类的方法,实现不一样的功能。

  

对象的拷贝(copy):

  1 会产生一个新的对象,对象的内容与源对象相同。

  

  2 源对象与新对象使用不同的内存地址。

 

  3需要实现NSCopying或者NSMutableCopying协议才能使用 复制功能

 需要注意的时,新的引用计数是1.

 

copy返回的是不可变的对象。

mutablecopy 返回的是可变的对象。

 

  

浅拷贝只复制对象本身,而不会复制对象引用的其它对象

—深拷贝除了复制对象本身,还会复制对象所引用的其它对 象

 

 定义属性中的strong和copy关键字的差别。举例说明。

声明一个对象的属性。用途的关键字copy

@property(nonatomic,copy) NSMutableArray *books;

则系统自动生成的set方法是:

 

-(void)setBooks:(NSMutableArray *)books

{

       _books=[books copy];/返回的是不可变对象   

}

 

如果将copy改成strong,则系统自动生成的set方法是

 

-(void)setBooks:(NSMutableArray *)books

{  

    _books=self.books;//返回的对象是不是可变的,要看本身是可变的还是不可变的,例如这个books是NSMutableArray *,所以是可变的。

}

 

 

浅拷贝还是深拷贝是在

-(id)copyWithZone:(NSZone *)zone中看的。调用了copy函数则是深拷贝。

      但是如果两个对象是不可变的,而且内容相同。那么系统可能会自动优化,将两个对象指向同一个地址。即用的是同一片内存空间。

posted @ 2014-07-30 08:10  卢灿  阅读(171)  评论(0编辑  收藏  举报