请选择 进入手机版 | 继续访问电脑版
查看: 543|回复: 0

[IOS开发教程] IOS ID生成器

3万

主题

3万

帖子

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
100197
发表于 2015-11-19 18:54:34
不重复的Id生成器,理论上每秒钟最多可以生成8999条Id,实际上每秒钟约能生成6000条Id。
已在近乎客户端得到实现.
原作者(近乎团队--移动部)
  1. //
  2. // IdGenerator.m
  3. // Copyright (c) 2014年 青岛拓宇网络科技有限公司. All rights reserved.
  4. //
  5. #import "IdGenerator.h"
  6. staticlonglongtime_stamp = 0;
  7. staticlonglongtime_stamp_now = 0;
  8. staticNSMutableArray*temp =NULL;
  9. staticNSNumber*random_n =NULL;
  10. staticNSLock*theLock =NULL;
  11. @implementationIdGenerator
  12. /*
  13. * 获取下一个Id
  14. */
  15. + (longlong)next{
  16. if(theLock ==NULL)
  17. theLock = [[NSLockalloc]init];
  18. if(temp ==NULL)
  19. temp = [[NSMutableArrayalloc]init];
  20. @synchronized(theLock){
  21. time_stamp_now = [[NSDatedate] timeIntervalSince1970];
  22. if(time_stamp_now != time_stamp){
  23. //清空缓存,更新时间戳
  24. [temp removeAllObjects];
  25. time_stamp = time_stamp_now;
  26. }
  27. //判断缓存中是否存在当前随机数
  28. while([temp containsObject:(random_n = [NSNumbernumberWithLong:arc4random() % 8999 + 1000])])
  29. ;
  30. if([temp containsObject:random_n]) {
  31. return-1;
  32. }
  33. [temp addObject:[NSNumbernumberWithLong:[random_n longValue]]];
  34. }
  35. return(time_stamp * 10000) + [random_n longValue];
  36. }
  37. @end
复制代码


回复

使用道具 举报