在室內地圖引擎 SDK開發中,今天忽然碰到了一個BUG,一查因爲前幾天不知道怎麼腦抽筋的,在一些類中加了private 的static的變量和使用單例模式時static類對象形成的。緣由是銷燬了某個類對象後,其類中的static變量還存在,並無被銷燬 (static變量不屬於類成員),等下次進來的時候,存在衝突。設計
慎重使用static變量。
對象
使用靜態變量要特別注意,由於他們「不受控制」,很容易產生BUG。可能會爲了方便定義一些static集合變量,最後當集合比較大時,形成內存溢出;可 能會在類中定義static變量,把它當成類的成員屬性,在銷燬類對象時,沒有手動是釋放它(置null),下次使用時與上一次的static變量衝 突......當發生這些錯誤發生在你身上時,只能說明你還不合格。因此我還不合格。內存
注意「單例模式」。開發
在 某些狀況下,你可能設計了某個類對象爲「單例模式」,來爲一個模塊提供一個「橋樑」,然而這並非所謂的「全局」。當通過某些操做時後,退出了使用此單例 對象的功能模塊,而後又進入之,此時須要從新生成單例對象,你會發現仍是上次那個對象,而這不是咱們須要的。緣由就是上次退出那個功能模塊時,沒有釋放掉 「單例」對象(這種狀況必須手動清理)。因此所謂的「單例模式」,還需考慮範圍的,使用時須要注意。
變量
總結:使用static時,多思考,能不用就別用,這東西不是好東西。地圖