최근 내 프로젝트 중 일부가 반짝이는 새로운 Flex 4.6 SDK로 마이그레이션되었습니다. 그것이 단지 사소한 발표 였기 때문에 나는 많은 어려움을 예상하지 못했습니다. 그러나 사실 나는 그 곳곳에 수 백 가지의 오류가 있습니다. 이 오류는 주로 Spark SkinnableComponent
에서 발생합니다. 예를 들면 :Flex 4.5와 4.6 사이의 점등 라이프 사이클이 바뀜
override protected function getCurrentSkinState():String {
return mySkinPart.someProperty ? "normal" : "someOtherState";
}
4.5에서 잘 작동,하지만 4.6에서 나에게 nullpointer
오류가 발생합니다. 그 이유는 충분히 간단합니다 : 4.6에서 getCurrentSkinState()
이 skinpart가 생성되기 전에 호출되는 반면, 4.5에서는 기본 상태의 skinpart가있을 것이라고 확신 할 수 있습니다.
추가 조사를 통해 배열의 첫 번째 상태 대신 undefined
(이제는 getCurrentSkinState()
이 호출 될 때까지)의 초기 상태가 지금은 undefined
이라고 생각했습니다.
이러한 문제를 해결하는 것은 일반적으로 쉽고 내 편에서 다소 방어적인 프로그래밍이 필요합니다. 하지만 그건 내 진짜 문제가 아니야.
진짜 문제 구성 요소의 수명주기가 변경된 경우, 나는이 변경 내 프로젝트의 어떤 부분에 영향을 미칠 수 있습니다 무엇 정확히 을 알고 싶습니다 것입니다.
누군가가 이것에 대해 밝히거나 최소한 내가 올바른 정보를 읽을 수있는 적절한 곳을 가리킬 수 있다면 매우 감사 할 것입니다. (내가 찾을 수있는 유일한 릴리스 노트는 새 모바일 구성 요소만을 다루기 때문에) .
편집 (이 질문을 변경하지 않습니다 난 그냥 당신과 함께 내 연구 결과를 공유하기를 원해요)
에게 난 그냥 우연히 또 다른 문제 : dynamic
수정이 더 이상 상속되지 것을 서브 클래스. 이것은 순수한 ActionScript 문제이므로 다른 방식으로 처리하는 컴파일러라고 생각합니다.
설명해 드리겠습니다.
var t:Array = new MyClass();
t.push("hello");
- SDK 4.5.1 : 아무 문제
- SDK 4.6이 같은이 사용자 정의 배열에 새로운 항목을 밀어하려고하면, 지금
public class MyClass extends Array { }
:이 클래스를 고려 : "런타임에 MyClass에 속성 0을 만들 수 없습니다"
분명히 그 이유는 Array가 동적이고 MyClass가 없기 때문입니다. 고정 :
public dynamic class MyClass extends Array { }
오류가 발생했습니다.
하지만 이와 같은 코드가 있고 소스 코드에 액세스 할 수없는 타사 라이브러리를 사용하면 어떻게됩니까? 내 응용 프로그램이 중단되고 그것을 고칠 수있는 방법이 없습니다. 내 말은 : 어서, 도트 - 릴리스에 대한 사소한 변화가 아니야.
나는 이것을 너무 심하게 여겼다. 나는 버그라고 생각한다. 구성 요소가 활성화되기 전에 피부 부품에 액세스하려고하면 볼 수 있듯이 발생합니다. 내 "솔루션"은 callLater()를 사용하여 다음 프레임의 스킨 부분에 액세스하는 것입니다. – sydd
@sydd 버그라고 생각하지 않습니다. 그것은 프레임 워크에서 일관된 변화이며, 그것에 대해 더 알고 싶습니다. skinpart가 언제 사용할 수 있는지 알고 싶으면'partAdded()'를 오버라이드하십시오. callLater()를 사용하는 것은 정확하지 않습니다. – RIAstar
@RIAstar 혹시 이것에 대한 해결책을 찾았습니까? 4.5에서 4.6으로 업데이트하는 중대한 문제가 있습니다. ([여기 자세히] (http://stackoverflow.com/questions/11840098/upgrading-to-flex-4-6-from-flex-4-5)) 당신이 통찰력을 가지고 있다면 그것은 절대적으로 나의 하루를 만들 것입니다. – NoobsArePeople2