태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
밤하늘의 실제별, 나도 가질 수 있다?!

[Flex] ExcludeClass Metadata 태그

2008/09/23 14:36

 

[공지]이미지나 링크가 깨졌다면 댓글 부탁드립니다.

SWC로 Flex 라이브러리를 배포할때 그 내부에는 다른 프로젝트에서 직접 접근하는 것을 방지하고 싶은 핵심클래스들도 포함되는 경우가 다분하다. 이런 경우 그런 클래스 앞에 [ExcludeClass]를 사용하면 이 클래스가 포함된 SWC를 사용하는 프로젝트에서는 코드 힌트(code hint)를 통해 클래스를 직접 볼 수 없게 된다.


package com.starpl.example

{

        import mx.core.UIComponent;

        [ExcludeClass]

        public class MyComponent extends UIComponent

        {

               …(생략)

        }

}


위와 같이 MyComponent 클래스를 만들고 SWC를 배포한 Flex Project나 AIR Project에서는 이 클래스가 외부로 노출이 되지 않기 때문에 사용할 수 없게된다.

Flex SDK를 직접보면 이런 클래스들을 볼 수 있는데, 그 중에 mx.core.ApplicationGlobals 를 보면 다음과 같다.

package mx.core
{

        [ExcludeClass]

 

        public class ApplicationGlobals

        {

              public static var application:Object;

        }

}



이 클래스는 Flex Builder에서 import mx.core. 까지 입력해도 ApplicationGlobals가 코드 힌트(code hint)로 나오지 않는다. [ExcludeClass]로 인해 가려졌기 때문이다. 그러나 import mx.core.ApplicationGlobals 로 완성된 문장을 쓰면 사용할 수는 있다. 즉 SWC 내부에 [ExcludeClass]로 작성된 Class는 작성자 외에는 직접적으로 사용자가 알 수 없다는 뜻이지 SWC안에 이 클래스가 포함되지 않는다는 것을 뜻하지 않는다.

잘 사용하면 제작된 라이브러리를 사용하는 사람들로 하여금 오용의 소지를 줄여줄 수 있겠다.

글쓴이 : 지돌스타(http://blog.jidolstar.com/373)

크리에이티브 커먼즈 라이선스
Creative Commons License

Adobe Flash Platform , , , ,

Trackback 주소: http://blog.jidolstar.com/trackback/373
  1. Exclude, ExcludeClass, Inspectable등의 일부 메타데이터 태그는, 빌더에서만 동작한다는게 조금 아쉽습니다.
    mxmlc에서도 컴파일시 에러 또는 경고를 보여주면 더 좋을 것 같다는 생각이...
    전 이미 빌더를 구입해서 상관 없지만서도.. ㅎㅎㅎ;

  2. 전 빌더만 사용해서 아쉽다는 생각이 전혀 안든다는 ㅋㅋㅋ ^^

  3. ExcludeClass를 사용해서 코드 넘겨주면 꼭 써보는 친구들이 있어요 ㅎㅎ
    internal Class만으로는 한계가 있고..
    게다가 이런 문제는 한참 뒤에나 발견이되기 때문에, 그간 개발된 다른 작업물들하고 엮여서 피를 토하기도 하는..;;

  4. 잘 배우고 갑니다 ^_^
    ExcludeClass태그를 쓸때는 클래스 설게를 잘해야겠군요....

  5. 네~~
    사용법은 쉽지만 어디에 붙여야할지는 고민해야겠더라구요. ^^

  6. 헐... 하나 배웠네염 ^^

  7. 유용한 정보가 되었으면 합니다. ^^

  8. ArrayList 쓰는 저 같은 넘도 있......ㅋ