国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS開發:單例模式

2019-11-14 19:52:32
字體:
來源:轉載
供稿:網友

 

這是我的開園第一篇,至于為什么要寫單例模式,是因為我在學習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比較初級,能夠節省內存空間和時間,但存在多線程狀態下并發問題,當然網上有很多改進版,大家可以搜索研習。

                                  

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 横峰县| 安阳县| 略阳县| 霍州市| 新乡市| 新平| 安泽县| 阿荣旗| 塔河县| 万荣县| 舒城县| 延川县| 凌源市| 郁南县| 二手房| 山东省| 扎兰屯市| 建德市| 中牟县| 江津市| 新津县| 吉安县| 乌拉特后旗| 锦州市| 沧源| 灵丘县| 巫山县| 五峰| 延津县| 田东县| 望谟县| 邵东县| 峨眉山市| 曲靖市| 靖西县| 克什克腾旗| 且末县| 盐亭县| 泰顺县| 高邮市| 岑溪市|