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