gpt4 book ai didi

apache-flex - Spark生命周期在Flex 4.5和4.6之间更改

转载 作者:行者123 更新时间:2023-12-03 18:36:12 25 4
gpt4 key购买 nike

我最近将一些项目迁移到了 Shiny 的新Flex 4.6 SDK。我没想到会有太多麻烦,因为它只是一个次要版本。但是事实上,我到处都有数百个错误。这些错误主要来自Spark SkinnableComponent;例如:

override protected function getCurrentSkinState():String {
return mySkinPart.someProperty ? "normal" : "someOtherState";
}

在4.5下可以正常工作,但在4.6中会抛出 nullpointer错误。原因很简单:在4.6中,在创建外观部件之前调用了 getCurrentSkinState(),而在4.5中,我可以确定默认状态下的外观部件将在那里。

进一步的调查使我相信,外观的初始状态现在是 undefined而不是 States数组中的第一个状态(直到它称为 getCurrentSkinState()为止)。

通常,解决这些问题非常容易,而且从我这一方面来说,还需要防御性更高的编程。但这不是我真正的问题。

真正的问题是,如果组件的生命周期发生了变化,我想确切地知道发生了什么变化,以及项目的哪些部分可能会受到影响。

如果有人可以对此有所了解或至少将我指向可以阅读所有相关内容的正确地方,我将不胜感激(因为我发现的唯一发行说明仅涉及新的移动组件)。

编辑(这不会改变问题;我只想与您分享我的发现)

我刚遇到的另一个问题: dynamic修饰符似乎不再被子类继承。这是一个纯粹的ActionScript问题,所以我认为是编译器将其区别对待。

让我解释。考虑此类:
public class MyClass extends Array { }

现在,如果我尝试像这样将新项目推送到此自定义数组中:
var t:Array = new MyClass();
t.push("hello");
  • SDK 4.5.1:没问题
  • SDK 4.6:运行时
  • “无法在MyClass上创建属性0”

    显然,这是因为Array是动态的,而MyClass不是,所以很容易解决:
    public dynamic class MyClass extends Array { }

    错误消失了。

    但是,如果我使用的第三方库具有这样的代码并且没有源代码访问权限,该怎么办?我的应用程序将损坏,无法修复它。我的意思是:拜托,对于点发布来说,这并不是什么小小的改变。

    最佳答案

    我认为这里有两个问题。

    1 ) The real issue is that if the component lifecycle has changed, I'd like to know exactly what has changed and what parts of my projects might be affected.



    我还没有看到对两个版本之间差异的全面的底层分析。如果您真的很担心,并且有时间节省,可以使用diff工具比较两个SDK的源代码。不应有太多重大的结构变化-例如重命名的类或包,所以可能还不错。我希望很多类(class)都不会改变。

    2 ) Another issue I just ran into: the dynamic modifier seems to no longer be inherited by subclasses. This is a pure ActionScript issue, so I guess it's the compiler that treats it differently.



    这个比较容易。 dynamic从未被继承。 Object是动态的,因此,如果继承了该属性,则每个类也必须是动态的。

    如果与动态类实例有关的行为似乎有所变化,则您的代码中还有其他情况。

    关于apache-flex - Spark生命周期在Flex 4.5和4.6之间更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8502204/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com