单例

单例特性:

1.只初始化一次且内存唯一(不管创建多少次,永远都是第一次创建的对象)

2.不释放,第一次创建成功之后,直到程序退出,系统才会回收内存

那具体怎么创建单例呢?

2.创建个ShareInstance类(继承于NSObject)在.m里定义单例类

// 设置静态变量(静态区只初始化一次,再走就不用初始化了),作用域范围:如果在{}外面就作用于整个类

static ShareInstance *share = nil;

@implementation ShareInstance

// 避免初始化和分配内存(alloc)多次调用,通过类方法创建对象,因为类方法只能类才能调用

+(ShareInstance *)shareInstance

{

#warning  单例安全(如果同时调用这个类时):第一种方法:

//    @synchronized(self){

//    if (!share ) {//如果为空,就初始化

//        share = [[ShareInstance alloc] init];

//        //对字典,数组,集合等容器类型的对象在.h里声明了.,就必须在.m里的初始化方法里对这个容器进行初始化

//        share.array = [NSMutableArray array];

//    }

//    return share;

//  }

//}

#warning 第二种:

    static dispatch_once_t once;

    dispatch_once(&once, ^{

        share = [[ShareInstance alloc] init];

    });

    return share;

                  }

@end


2.在.h里声明属性

@interface ShareInstance : NSObject

@property(nonatomic,assign)NSInteger loginState;// 登录状态,默认值0

@property(nonatomic,retain)NSMutableArray *array;

@property(nonatomic,retain)NSString *name;

+(ShareInstance *)shareInstance;

@end

3.在Appdelegate.m里创建对象,然后赋值

ShareInstance *share = [ShareInstance shareInstance];

    share.loginState = 0;

    share.name = @"登录";

    NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3", nil];

    [share.array addObjectsFromArray:arr];

4.在mainViewController.m里取值

 // 获得对象,把值取出

    ShareInstance *share = [ShareInstance shareInstance];

    NSLog(@"share = %@",share.name);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值