您的位置 首页 IC

iOS单例形式的完成

单例是指静态分配的实例,而 iphone sdk 中全是这种实例,例如[UIApplication sharedApplication] 返回一个指向代表应用程序的单例对象的指针。[UIDevice

单例是指静态分配的实例,而 iphone sdk 中满是这种实例,例如

[UIApplication sharedApplication] 回来一个指向代表应用程序的单例目标的指针。[UIDevice currentDevice] 获取一个代表一切运用硬件渠道的目标。

将类办法与单例相结合,便能够在程序的任何地方拜访静态实例,而无需运用指向目标的指针或保存它的实例变量。创立类的仅有实例(一般单例)的函数示例:

//在许多时分,咱们运用某个类的仅有实例。最常见的便是一个程序的主类,以下是以名为 RootViewController 创立的一个单例函数:

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 这个主要是考虑多线程的程序,这个指令能够将{ } 内的代码约束在一个线程履行,假如某个线程没有履行完,其他的线程假如需求履行就得等着。

2、网上查找的代码,如同有一个没有参加 autorelease,我觉得应该需求加。由于假如调用的函数没有release就麻烦了(我觉得,iOS 上的程序,关于创立用于函数回来值的,都应该考虑 autorelease)。

3、allocWithZone 这个是重载的,由于这个是从拟定的内存区域读取信息创立实例,所以假如需求的单例已经有了,就需求制止修正当时单例,所以回来 nil。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/297573.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部