欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

单例种里为什么要写个类方法来创建对象

更新时间: 2014-01-05 02:37:06 责任编辑: Author_N1

 

单例类里为什么要写个类方法来创建对象?
这是单例类NetAccess中定义并实现的类方法,用来创建对象。
+ (NetAccess *)sharedNetAccess
{
    if(!_sharedNetAccess)
    {
        _sharedNetAccess = [[NetAccess alloc] init];
    }
    return _sharedNetAccess;
}
我不懂,为什么不在使用的地方直接NetAccess *myNet=[NetAccess alloc]init];?
--参考方法--
比较常规的写法是这样子:
+ (NetAccess *)sharedNetAccess
{
    static NetAccess *sharedNetAccess;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedNetAccess = [[NetAccess alloc] init];
    });
    return sharedNetAccess;
}

单例,顾名思义,只存在唯一的实例,是一个静态的实例,也就是说无论你在A类B类或C类调用[NetAccess sharedNetAccess];它的地址都是一样的。
这样子做有很大的方便之处,比如它有一个整形变量a,你先在A类赋值为5,然后在B类调用,它的值还是5。
--参考方法--
静态实例 只执行一次初始化, 写法楼主可以参照楼上的。也可以自己写初始化方法,禁用掉init。
--参考方法--
在A类:
NetAccess *myNet=[NetAccess alloc]init];

在B类:
NetAccess *myNet=[NetAccess alloc]init];

将产生不同地址的两个NetAccess对象,这样就达不到数据共用的目地了
--参考方法--
保证此类在全局中只有一个实例
--参考方法--
楼上回答的都很好,为了保证此类在全局中只有一个实例
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:37:06
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/12179/
本文WWW.DOC100.NET DOC100.NET版权所有。