1 基本概念 :在程序運(yùn)行過(guò)程中,一個(gè)類(lèi)只有一個(gè)實(shí)例。
2 使用場(chǎng)合 :在整個(gè)應(yīng)用程序中,共享一份資源(這份資源只需要?jiǎng)?chuàng)建初始化一次)。
3 實(shí)現(xiàn)步驟
1)在類(lèi)的內(nèi)部提供一個(gè)static修飾的全局變量。
2)提供一個(gè)類(lèi)方法方便外界訪問(wèn)。(類(lèi)方法的命名:share + 類(lèi)名 | default + 類(lèi)名)
3)重寫(xiě)+allocWithZone方法。(在這里保證為對(duì)象,只分配一次內(nèi)存空間,使用一次性執(zhí)行代碼)
4)重寫(xiě)-copyWithZone 和 -mutableCopyWithZone (在這兩個(gè)方法中,直接返回實(shí)例對(duì)象,因?yàn)椋@兩個(gè)方法是對(duì)象方法,被調(diào)用,說(shuō)明,對(duì)象已經(jīng)被創(chuàng)建了,所以直接返回實(shí)例對(duì)象就可以了)。
上面的四步,是在ARC下創(chuàng)建一個(gè)單例對(duì)象,如果是在MRC下,還要補(bǔ)充幾個(gè)方法的實(shí)現(xiàn)。
5)重寫(xiě) -release方法(在這個(gè)方法中,什么也不做)。
6)重寫(xiě) -retain方法(在這個(gè)方法中直接返回實(shí)例對(duì)象)
7)重寫(xiě) -retainCount方法(在這個(gè)方法中,返回一個(gè)最大值)
相關(guān)代碼如下: