欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS开发简记(5):设备唯一标识与全局变量

程序员文章站 2022-06-11 15:56:02
这里记录两个iOS开发中经常用到的知识点,一个是唯一标识,一个是全局变量。唯一标识一台设备(比如iPhone、iPad等)是一个基本的实现与业务上的需求,因为这个唯一标识在许多场景都需要使用到,比如用来统计(日活、总用户数等),再比如用作默认的账号,等等。 ......

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

(1)唯一标识

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

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

nsstring *udid = [[uidevice currentdevice] uniqueidentifier];

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

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

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

引用以上这个项目uqid目录的文件,即可获取设备的唯一标识,比如这样使用:
iOS开发简记(5):设备唯一标识与全局变量

(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中这样定义:
iOS开发简记(5):设备唯一标识与全局变量

在globalvar.m中这样定义:
iOS开发简记(5):设备唯一标识与全局变量

之后,就可以在任何地方使用这些全局变量–通过单例函数来使用即可,比如这样:
iOS开发简记(5):设备唯一标识与全局变量

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