當Module中使用managers時(如PopUpManager,DragManager, HistoryManager)容易出現這個問題,
manager的方法都是靜態方法,整個應用程序中創建了一個該manager接口的singleton,
但module僅在自己的Application domain中使用該singleton, 當多個module使用同一個singleton且main
application沒有使用時,就會出現這個空對象引用問題:首先引入某manager的module不能將該manager接口的singleton跟其
他module共享,其他module調用該Manager的方法時,應用程序不會再創建該manager接口的實例,這個module就無法引用到該manager接口的實例,就出現了空對象引用問題,可以參考Flex的源碼。
默認情況下,Accordion和TabNavigator的 historyManagementEnabled =
true;而ViewStack的historyManagementEnabled = false;
所以使用TabNavigator和Accordion時要注意HistoryManager的共享代碼問題。另,僅一個module使用HistoryManager時,卸載之後又加載該module也會出現該問題,說明第二次加載時相當於一個新的module了。
Hello following code in your main application(將下面代碼加入到含有該moudleloader的主程序文件中):
import mx.managers.*;
private var _dragManager:DragManager;
private var _historyManager:HistoryManager;
private var _popupManager:PopUpManager;