zoukankan      html  css  js  c++  java
  • iOS开发简记(5):设备唯一标识与全局变量

    这里记录两个iOS开发中经常用到的知识点,一个是唯一标识,一个是全局变量。

    (1)唯一标识

    唯一标识一台设备(比如iPhone、iPad等)是一个基本的实现与业务上的需求,因为这个唯一标识在许多场景都需要使用到,比如用来统计(日活、总用户数等),再比如用作默认的账号,等等。

    udid,曾经是唯一标识的首选,比如这样取得:

    NSString *UDID = [[UIDevice currentDevice] uniqueIdentifier];

    但是,udid已经被苹果拒绝使用,所以这个不是小程的选择。同样,mac地址,也是被苹果封杀的。

    其它的办法,比如IDFA、IDFV、UUID,都有各自的缺陷,但并不意味不能使用–可以组合起来,并结合keychain来使用,从而尽可能规避出现的缺陷。

    这样的方案已经有人实现,比如这个项目:
    https://github.com/herody/UQIDDemo

    引用以上这个项目UQID目录的文件,即可获取设备的唯一标识,比如这样使用:

    (2)全局变量

    为了便利与信息同步,项目中经常需要使用一些全局变量。

    全局变量的设计,一般有两个办法。

    办法一,在AppDelegate.h中定义全局变量,也就是在类AppDelegate中增加全局变量,比如:

    @property (strong, nonatomic) UIWindow *window;

    @property (nonatomic, assign)BOOL firstrun;

    然后,在任何地方,都可以访问AppDelegate,比如:

    AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];

    myDelegate.firstrun = YES;

    办法二,使用新的文件,定义一个单例的类,比如在globalvar.h中这样定义:

    在globalvar.m中这样定义:

    之后,就可以在任何地方使用这些全局变量–通过单例函数来使用即可,比如这样:

    感谢各位的关注,后面我会把IOS客户端源码、API源码呈献给大家,完整的示例大家可以暂时到AppStore下载安装“知音”。

  • 相关阅读:
    实现Promise的first等各种变体
    js打乱数组的实战应用
    Vue单页面中进行业务数据的上报
    如何实现一个楼中楼的评论系统
    vue实现对表格数据的增删改查
    用CSS3实现无限循环的无缝滚动
    使用vue实现tab操作
    redis事务与关系型数据库事务比较
    优先队列原理与实现
    MySQL排序原理与案例分析
  • 原文地址:https://www.cnblogs.com/jonlan/p/9999660.html
Copyright © 2011-2022 走看看