IOS開發筆記——單例模式

來源:互聯網
上載者:User

IOS開發筆記——單例模式

由java轉入IOS開發了,自學配合實際項目記錄一些項目中用到的技巧,APP比較小,涉及到的知識點比較簡單,大牛就不用看了,小兵大家一起討論。單例模式就是確保在程式運行過程中,一個類只有一個執行個體,公司的APP的帳號管理是通過單例實現的。先上代碼:

@interface JVAccountManager : NSObject
+ (JVAccountManager *)sharedAccount;
@end

@implementation JVAccountManager
+ (JVAccountManager *)sharedAccount
{
static JVAccountManager *sharedAccountManager;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedAccountManager = [[JVAccountManager alloc] init];
});
return sharedAccountManager;
}
@end

這是我們公司的實現方法,網上可以查到其他實現方法,但是要重寫一些方法保證執行個體的唯一性,比如allocWithZone,copyWithZone,這裡不贅述,我貼出來的是代碼最簡潔的實現方法;
比較陌生的是dispatch_once這個方法,這個方法其實就是為了保證執行個體的唯一性。這個方法是display_once,GCD(Grand Central Dispatch)中提供的方法,根據IOS編程這本書裡面的解釋,是一種低級的對NSOperation和NSOperationQueue的類比,使用Objective-C block。其實我不是很清楚這一塊,以後的文章中再分析吧。需要明白的是dispach_once函數中的代碼塊只會被執行一次,而且還是安全執行緒的。
void dispatch_once( dispatch_once_t *predicate, dispatch_block_t block);其中第一個參數predicate,該參數是檢查後面第二個參數所代表的代碼塊是否被調用的謂詞,第二個參數則是在整個應用程式中只會被調用一次的代碼塊;

在這個程式中擷取這個唯一執行個體的方法:JVAccountManager *sharedAccountManager = [JVAccountManager sharedAccount];

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.