日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 單例是指靜態(tài)分配的實例,而 iphone sdk 中全是這種實例,例如[UIApplication sharedApplication] 返回一個指向代表應(yīng)用程序的單例對象的指針。[UIDevice currentDevice]

 單例是指靜態(tài)分配的實例,而 iphone sdk 中全是這種實例,例如

[UIApplication sharedApplication] 返回一個指向代表應(yīng)用程序的單例對象的指針。[UIDevice currentDevice] 獲取一個代表所有使用硬件平臺的對象。

將類方法與單例相結(jié)合,便可以在程序的任何地方訪問靜態(tài)實例,而無需使用指向?qū)ο蟮闹羔樆虮4嫠膶嵗兞?。?chuàng)建類的唯一實例(普通單例)的函數(shù)示例:

//在很多時候,我們使用某個類的唯一實例。最常見的就是一個程序的主類,以下是以名為 RootViewController 創(chuàng)建的一個單例函數(shù):

static RootViewController *sharedRootController = nil;

+(RootViewController *) sharedController{

@synchronized(self)

{

if (sharedRootController == nil)

{

sharedRootController = [[[self alloc] init] autorelease];

}

}

return sharedRootController;

}

+(id) allocWithZone:(NSZone *)zone

{

@synchronized(self)

{

if (sharedRootController == nil)

{

sharedRootController = [super allocWithZone:zone];

return sharedRootController;

}

}

return nil;

}

代碼說明:

1、synchronized 這個主要是考慮多線程的程序,這個指令可以將{ } 內(nèi)的代碼限制在一個線程執(zhí)行,如果某個線程沒有執(zhí)行完,其他的線程如果需要執(zhí)行就得等著。

2、網(wǎng)上搜索的代碼,好像有一個沒有加入 autorelease,我覺得應(yīng)該需要加。因為如果調(diào)用的函數(shù)沒有release就麻煩了(我覺得,iOS 上的程序,對于創(chuàng)建用于函數(shù)返回值的,都應(yīng)該考慮 autorelease)。

3、allocWithZone 這個是重載的,因為這個是從制定的內(nèi)存區(qū)域讀取信息創(chuàng)建實例,所以如果需要的單例已經(jīng)有了,就需要禁止修改當前單例,所以返回 nil。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉