OC中的单例

创建iOS应用的单例模式实例

创建类的唯一实例(单例)的函数示例   

在很多时候,我们使用 一个某个类的唯一实例。最常见的就是一个程序的主类。以下是以名为 RootViewController 创建的一个单例 函数:

 static

 RootViewController *

sharedRootController =
nil
;
+ ( RootViewController * ) sharedController
{ @synchronized ( self )
{
  if ( sharedRootController == nil ) {
 sharedRootController = [ [ [ self alloc ] init ] autorelease ] ;
}
} return singleController;
}
+ ( 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值