IOS 單例模式

2021-06-23 01:57:00 字數 857 閱讀 4452

單例模式顧名思義就是只有乙個例項,它確保乙個類只有乙個例項,並且自行例項化並向整個系統提供這個例項。它經常用來做應用程式級別的共享資源控制。這個模式使用頻率非常高,通過乙個單例類,可以實現在不同視窗之間傳遞資料。

在objective-c中要實現乙個單例類,至少需要做以下四個步驟:

1、為單例物件實現乙個靜態例項,並初始化,然後設定成nil,

2、實現乙個例項構造方法檢查上面宣告的靜態例項是否為nil,如果是則新建並返回乙個本類的例項,

3、重寫allocwithzone方法,用來保證其他人直接使用alloc和init試圖獲得乙個新例項的時候不產生乙個新例項,

4、適當實現allocwithezone,copywithzone,release和autorelease

例子:為rootviewcontroller建立乙個單例函式:

static rootviewcontroller *sharerootviewcontroller = nil;

+(rootviewcontroller *)sharedcontroller }

return sharerootviewcontroller; }

+(id)allocwithzone:(nszone *)zone }

return nil; }

nszone:簡單來說可以把它想象成乙個記憶體池,alloc或者dealloc這些操作都是在這個記憶體池中操作的,cocoa總是會分配乙個預設的nszone,任何預設記憶體操作都是在這個zone上進行的,使用預設zone存在缺陷,因為他是全域性範圍的,頻繁使用會導致記憶體的碎片化,尤其是大量的alloc和dealloc的時候,效能上會受到一定影響。因為你完全可以自己生成乙個zone並將alloc,copy這些限制在這個zone中。

IOS 單例模式

單例模式顧名思義就是只有乙個例項,它確保乙個類只有乙個例項,並且自行例項化並向整個系統提供這個例項。它經常用來做應用程式級別的共享資源控制。這個模式使用頻率非常高,通過乙個單例類,可以實現在不同視窗之間傳遞資料。在objective c中要實現乙個單例類,至少需要做以下四個步驟 1 為單例物件實現乙...

iOS 單例模式

最近在ios開發中,需要用到單例模式,於是自己動手寫了乙個,它看起來是這樣的 1 id sharedinstance return sharedinstance 後來發現許多書上的做法都使用到了bool變數作為標值位,它看起來是這樣的 2 id sharedinstance return share...

iOS 單例模式

在objective c中要實現乙個單例類,至少需要做以下四個步驟 1 為單例物件實現乙個靜態例項,並初始化,然後設定成nil,2 實現乙個例項構造方法檢查上面宣告的靜態例項是否為nil,如果是則新建並返回乙個本類的例項,3 重寫allocwithzone方法,用來保證其他人直接使用alloc和in...