在室内地图引擎 SDK开发中,今天突然碰到了一个BUG,一查由于前几天不知道怎么脑抽筋的,在一些类中加了private 的static的变量和使用单例模式时static类对象造成的。原因是销毁了某个类对象后,其类中的static变量还存在,并没有被销毁 (static变量不属于类成员),等下次进来的时候,存在冲突。
慎重使用static变量。
使用静态变量要特别注意,因为他们“不受控制”,很容易产生BUG。可能会为了方便定义一些static集合变量,最后当集合比较大时,造成内存溢出;可 能会在类中定义static变量,把它当成类的成员属性,在销毁类对象时,没有手动是释放它(置null),下次使用时与上一次的static变量冲 突......当发生这些错误发生在你身上时,只能说明你还不合格。所以我还不合格。
注意“单例模式”。
在 某些情况下,你可能设计了某个类对象为“单例模式”,来为一个模块提供一个“桥梁”,然而这并不是所谓的“全局”。当经过某些操作时后,退出了使用此单例 对象的功能模块,然后又进入之,此时需要重新生成单例对象,你会发现还是上次那个对象,而这不是我们需要的。原因就是上次退出那个功能模块时,没有释放掉 “单例”对象(这种情况必须手动清理)。所以所谓的“单例模式”,还需考虑范围的,使用时需要注意。
总结:使用static时,多思考,能不用就别用,这东西不是好东西。