iOS的單例模式

2021-07-06 10:53:45 字數 1466 閱讀 1267

arc模式下,分配記憶體,init只執行一次的**:

//全部變數和區域性變數有所區分帶_

static

id _instance;

@inte***ce

viewcontroller()

@end

@implementation viewcontroller

- (void)viewdidload

- (void)didreceivememorywarning

- (instancetype)init

});self = obj;

return self; }

/***  重寫這個方法:控制記憶體只分配一次

*/+(instancetype)allocwithzone:(struct

_nszone *)zone);

return

_instance; }

+ (instancetype)shareaudiotool);

return

_instance; }

非arc模式下:

需要重寫下面的方法(還有幾個沒有寫上去):

//oneway:分布式物件這個物件可能被多個程式訪問

- (oneway

void)release

- (instancetype)autorelease

- (nsuinteger)retaincount

+ (id)copywithzone:(struct

_nszone *)zone

定義乙個巨集 新建.h檔案  

//## :連線字串和引數

#define liwei(name)  +(instancetype)shared##name;

在.h中

#import "head_h.h"

liwei(love)

然後在.m中就能直接訪問到這個巨集定義的

+(instancetype)shareaudiotool

為了實現.m中的巨集定義 需要通過以下**:

//## :連線字串和引數

#define liwei(name)  +(instancetype)shared##name;

#define badboy(name) \

- (instancetype)init\

});\

self = obj;\

return self;\}\\

\+(instancetype)allocwithzone:(struct _nszone *)zone);\

return _instance;\}\\

+ (instancetype)shareaudiotool);\

return _instance;\

}注意 ,init方法中載入資源的部分不能寫在巨集定義中 因為資源是不確定的 另外 巨集只認一行 所以每一行後面都要加\來告訴他這是接著上面的  但是最後一行不用加\

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...