Swift 宏定义的坑

在我们开发的过程中,为了方便会 定义很多宏定义,像systemColor,systemUrl 之类的,如果是在OC开发的项目中不会出现问题,但是现在是在swift开发中,问题就显现出来了。

我的项目中,登录时,帐号,密码,组织机构ID等等其他一些程序中要用到的东西 都是使用UserDefault存储在本地,然后定义一个宏定义取出来,像这个样子 :

错误的做法

(ToolHelper.swift_GetUserDefaults()是封装的UserDefault取数据的方法),这样在程序运行中是不会有问题的;但是如果你退出了,切换了帐号重新登录,问题就来了:SystemUserPWD 它被定义为一个常量,所以它一旦被赋值就不会再改变,这就导致了 存储在本地的数据已经改变了,但是 SystemUserPWD 还是退出登录以前 的数据,程序中一旦用到这个值就会出问题了。

解决办法就是 SystemUserPWD不要定义为一个 常量,而是定义为一个 方法,像这样:


正确的做法

这样每次使用到它的时候 都是现取值就不会出现问题了。

你可能感兴趣的:(Swift 宏定义的坑)