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下载安装“知音”。
上一篇: Java8 HashMap详解