【发布时间】:2011-01-12 17:32:48
【问题描述】:
我有一个 Flash 项目,它有很多源文件。我有一个相当常用的类,叫它 Jenine。我最近(也许是无情地)将 Jenine 从一个命名空间迁移到另一个命名空间。我以为我们准备好了——我以为是时候了。新的珍妮在各方面都变得更好了——她减少了一些代码膨胀,她把自己从一些退化的阶级关系中解脱出来,她终于回到了她一直在心里暗自知道的名字空间是她真正的名字曾经属于。她是同类中的一员。
不幸的是,Flash 没有这些。或许,它已经形成了一种依恋。也许它不想要 Jenine 被解耦。无论哪种方式,它都牢牢记住了旧的、完美的珍妮版本。它拒绝继续前进。它忽略了她的(函数)调用。它试图忘记她新的公共界面。相反,它构建的每个 Jenine 实例始终是旧版本的副本,一直到其类路径:
var jenineInstance:Jenine = new Jenine();
trace( getQualifiedClassName(jenineInstance));
// Should print: com.newnamespace.subspace::Jenine
// Prints: com.oldnamespace.subspace::Jenine
// Ah, young love!
我们吵过架。我对我说过或做过的一些事情并不感到自豪。最后,我怒不可遏,彻底删除了珍妮的所有参考资料。她被彻底、彻底地从系统中抹去。我的光标落在了“清空垃圾箱”菜单选项上,就像棺材的冷盖一样。
我认为 Flash 从未恢复过。直到今天,它仍然牢牢记住了珍妮。她旧的、不完美的定义仍然像被遗弃的幽灵一样漂浮在我的项目中。每当我强制 Flash 编译时,它仍然会亲切地将她插入我的电影中,将她的定义依偎在其他生活类中,就像一座小神殿。我不知道他们能不能看到她。
Flash,我真的不再说话了。我写我的代码,它编译它。镇上来了一个叫 Summer 的新女孩,她长得和 Jenine 几乎一模一样,好像有人刚刚将她的源代码批发复制到一个新班级中,但 Flash 并没有表现出任何兴趣。大多数时候,当它认为我没在看的时候,它只是闷闷不乐,在我的 cmets 上写下糟糕的诗。
我希望没有其他人有过类似的经历,这只是 Flash 代码库的可怕黑暗泻湖中的一个奇异而痛苦的涟漪。有谁知道如何擦除编译器正在使用的任何缓存?
【问题讨论】: