美文网首页
iOS 全局变量

iOS 全局变量

作者: 罗显友 | 来源:发表于2017-12-13 16:45 被阅读0次

    不讲解全局变量的原理。只是记录一下使用场景。
    需要定义一个全局变量,供全局使用。比如版本更新的时候,需要存储本次从服务器获取的版本号,存储在本地,下次进来的时候讲服务器的版本号和本次的版本号作对比,然后实现版本更新。我这里说的不是ipa包的更新,因为ipa包的更新是可以动态获取到本地的版本号的,所以不用考虑这些。
    我说的情况是在做一些资源包下载的时候,就需要在本地保存上一次资源包的版本号,然后进行对比。
    默认本地第一次的是0,然后每一次获取新的版本就存进去(可以每次网络请求就存,也可以先判断有没有新版本再存)。然后就那这个存在本地的全局变量和网络获取的版本号作对比。
    这里我用的NSUserDefault。
    因为userDefault可以永久保存信息,并且每一次用相同的key存入不同的值,会被覆盖,当去用key去取值的时候,会取出最新存进去的值。所以刚好满足我的需求。

    当然,还有很多方法可以进行这种操作。比如plist,归档,数据库等等。
    有些人说单例可以实现,就是在单例里面创建一个变量,然后给变量赋值。我认为当程序被杀死之后,单例还是会被销毁,变量也会被销毁。所以我认为不适合这个场景。
    单例适合用在整个生命周期内提供一个全局变量。

    还有换肤功能,就是当我后台提示要有新的换肤功能之后,我就需要按要求去改变ui界面的颜色,所以我要在本地记录之前的ui颜色,然后做出相应的变化。要做到不同的用户在换肤的时候有不同的颜色,所以要和服务器返回的作对比。也是需要用到userDefalut。可以定义一个#define APP_SKIN_BACKGROUND_COLOR [[NSUserDefaults standardUserDefaults]stringForKey:@"appSkinBackGroundColor"]

    需要修改皮肤颜色时
    [[NSUserDefaults standardUserDefaults] setObject:RGB(100,100,100,1) forKey:@"appSkinBackGroundColor"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    相关文章

      网友评论

          本文标题:iOS 全局变量

          本文链接:https://www.haomeiwen.com/subject/fthzixtx.html