標籤:style blog io color ar os 使用 sp strong
這是我的開園第一篇,至於為什麼要寫單例模式,是因為我在學習ios之初對單例模式的概念比較模糊,特意在這做一次整理,希望可以和大家分享。
一,ios單例模式的概念(什麼是單例模式)
單例模式最主要的一點就是只有一個執行個體。執行個體是什嗎?執行個體就是對象一個叫法,對象執行個體化,用前輩的一個比喻就是說:製作月餅的磨具就是類,月餅就是對象,製作月餅的過程叫做對象執行個體化。
這個類只擁有一個執行個體,我們稱之為單例類。這個單例類需要向整個工程或者說裡面的各個類提供它的執行個體,通俗一點說,小明(執行個體對象)在一年級四班,他可以被叫到語文辦公室,也可以被數學辦公室點名。
優點麼,執行個體只有一個,你說呢,,,
二,單例模式的應用
下面是我的一個Demo,非常通俗(單例模式一般情況下如何建立使用)
DAO.h
1 #import <Foundation/Foundation.h>2 @interface DAO : NSObject3 + (DAO *)sharedDAO; //類方法
4 -(void)printYourName; //執行個體方法,就是過會執行個體要乾的事情5 @end
DAO.m
1 #import "DAO.h" 2 static DAO *instance=nil; //靜態執行個體化一個對象 ,為什麼是static,因為類方法也叫做靜態方法 3 @implementation DAO 4 5 + (DAO *)sharedDAO //判斷執行個體是否為空白,初始化它,作用就是獲得DAO的單例對象 6 { 7 if(instance==nil) 8 { 9 instance=[[DAO alloc] init];10 }11 return instance;12 }
13
14 -(void)printYourName //執行個體方法,在BL.m中將會調用
15 {
16 NSLog(@"張三");
17 }
@end
BL.h
1 #import <Foundation/Foundation.h>2 #import "DAO.h"3 4 @interface BL : NSObject5 6 @property (nonatomic,strong) DAO *dao; //建立一個叫dao的對象7 8 @end
BL.m
1 #import "BL.h" 2 3 4 5 @implementation BL 6 - (id)init //初始化 7 { 8 self=[super init]; 9 if(self)10 {11 self.dao=[DAO sharedDAO]; //獲得了單例對象12 13 [self.dao printYourName]; //用這個單例對象來調用DAO.m中的執行個體方法14 15 }16 return self;17 }18 19 @end
這是較為簡單一個demo,手打了一部分,可能會有瑕疵望指正。
對於剛剛學習ios的同學可能會協助。在MVC開發模式中經常要運用到,當然這個demo比較初級,能夠節省記憶體空間和時間,但存在多線程狀態下並發問題,當然網上有很多改進版,大家可以搜尋研習。
iOS開發:單例模式