這裡記錄兩個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目錄的文件,即可獲取設備的唯一標識,比如這樣使用:
(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下載安裝“知音”。