iOS设计模式之原型模式

1 何为原型模式:

原型模式属于一种简单的设计模式,它通过拷贝的方式快速的创建一个对象,创建的过程分为两种   (1) 浅复制   (2)  深复制

(1) 浅复制: 就是一种简单的指向同一个内存单元,共享数据

(2) 深复制: 将原内存中的数据拷贝出来,放在一个新的内存单元

2 何时使用原型模式:

(1) 对象类型需要在运行时才能确定

(2) 需要某对象在某状态下的状态


3 自定义原型模式:


   对象的复制相当于java中的clone()方法.也就是对象的深度复制-----即为其分配一个新的内存空间,并将原

象的内容复制出来,复制也会分配内存空间,那就是你要对复制出来的对象release.Object-C中的对象是否可以被

,要看他是否遵循NSCopying协议,同时实现  -(id)coprWithZone:(*NSZone)zone 方法,该方法由系统调

用.


Engine.h


#import <Foundation/Foundation.h>


@interface Engine :NSObject<NSCopying>


@end


Engine.m

/*

    NSZone---->一个表示内存空间的对象

 

    这个类方法必修使用[self class]来调用,因为Engine对象可能会有子类,

    若子类调用他的copyWithZone方法,由于allocWithZone用的是Engine对象,

    子类新增了成员变量,则新增的成员变量不会分配内存空间,从而造成内存泄露.

 */


#import "Engine.h"


@implementation Engine


-(id) copyWithZone:(NSZone *)zone{


   Engine *engine = [[[self class] allocWithZone:zone]init];

   return engine;

}


@end







发布了40 篇原创文章 · 获赞 7 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章