單例在整個(gè)工程中相當(dāng)于一個(gè)全局變量腰素,無論在哪里需要用到這個(gè)類的實(shí)力變量妒茬,都可以通過單例方法來取得锯茄,而且一旦創(chuàng)建了一個(gè)單例類搔驼,無論后面多少個(gè)界面調(diào)用了這個(gè)單例方法取得對(duì)象谈火,它們所有的對(duì)象都是指向同一塊內(nèi)存存儲(chǔ)空間,單例類保證了該類的實(shí)例對(duì)象是唯一存在的一個(gè)舌涨。
單例模式是iOS最常使用的設(shè)計(jì)模式之一糯耍,可以實(shí)現(xiàn)不同代碼間的數(shù)據(jù)共享問題。單例類也貫穿于整個(gè)iOS的SDK中囊嘉,iOS中也有很多的系統(tǒng)單例温技,例如:NSNotificationCenter(消息中心) 、NSFileManager(文件管理) 扭粱、 NSUserDefaults(持久化存儲(chǔ)數(shù)據(jù)) 舵鳞、NSURLCache(請(qǐng)求緩存)、sharedApplication琢蛤、NSHTTPCookieStorage(應(yīng)用程序cookies池)都是系統(tǒng)單例蜓堕;
單例類的實(shí)現(xiàn)方法:
比如先創(chuàng)建一個(gè)bleManager類,在.h中聲明此方法博其,然后在.m中做一下實(shí)現(xiàn)(有多種實(shí)現(xiàn)方法套才,也可用GCD或其他方式)。
假如在bleManager中有g(shù)etDeviceList一個(gè)方法慕淡,如下:
然后在整個(gè)項(xiàng)目中的任何一個(gè)界面中背伴,都可以通過shareInstance方法調(diào)用bleManager類里其他的方法,如getDeviceList峰髓,以此來實(shí)現(xiàn)數(shù)據(jù)共享傻寂。調(diào)用方法如: