[iOS] 生成自增整数

最近在项目开发中遇到一个开发需求,需要在APP中自动生成自增的整数(int32_t)。

之前碰到的需求有关于如何生成随机数或生成UUID之类的唯一字符串,这种生成自增整数的需求比较少见,特别是在iOS开发中,百度相关的资料比较少,反而在网上有很多关于Java的算法比较多。还是感觉Java的同学比较幸运,现在网络上有很多类库,信手拈来就可以用。

当然不是说OC中没有实现的方法,其实仔细一样,这个问题貌似可以利用单例实现。这个念头也是我参考了java同学的实现灵机一动想起来的。不过有待验证,从原理上,单例是整个应用程序只会执行一次,如果在单例里面定义一种自增长的方法,这个问题就简单的解决了。

talk is cheap,show code...

.h头文件: 

#import <Foundation/Foundation.h>

@interface GenerateNum : NSObject

@property (nonatomic) int value;

// 类方法
+(instancetype)shareManager;

// 自增方法
- (int)group;

@end

.m实现:

#import "GenerateNum.h"

@implementation GenerateNum
static GenerateNum *gNum;
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
    
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (gNum == nil) {
            gNum = [super allocWithZone:zone];
            gNum.value = 0;
        }
    });
    return gNum;
}

+ (instancetype)shareManager {
    return [[self alloc] init];
}

- (id)copyWithZone:(NSZone *)zone{
    return gNum;
}

- (id)mutableCopyWithZone:(NSZone *)zone {
    return gNum;
}

- (int)group {
    ++self.value;
    return self.value;
}

后面继续验证有没有问题。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值