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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章