Flex: Гарантируется ли исключение кода из скомпилированной сборки, когда он недоступен? - PullRequest
0 голосов
/ 11 ноября 2009

Предположим, у вас есть

private static const INCLUDE_MY_DEBUG_CODE:Boolean = false;

public function runMyDebugCode():void
{
    if ( INCLUDE_MY_DEBUG_CODE )
    {
        callADebugFunction();
    }
}

private function callADebugFunction():void
{
    ...
}

Учитывая, что нет другой ссылки на callADebugFunction, будет ли гарантировано, что callADebugFunction не является частью скомпилированной сборки?

Ответы [ 2 ]

8 голосов
/ 11 ноября 2009

Если нет ссылок на файл / класс - тогда он не будет скомпилирован.

В вашем случае, если у вас есть ссылка извне на этот класс - все методы будут скомпилированы.

Используйте переменные компиляции , чтобы исключить отладочный код из выпуска.

Перейдите в Project-> Properties-> Flex Compiler и добавьте

Для режима отладки:

-define=CONFIG::release,false -define=CONFIG::debugging,true

или для выпуска:

-define=CONFIG::release,true -define=CONFIG::debugging,false

Тогда в тебе функция runMyDebugCode ()

CONFIG::debugging { 
    trace("this code will be compiled only when release=false and debugging=true");
}


CONFIG::release { 
    trace("this code will be compiled only when release=true and debugging=false");
}
0 голосов
/ 11 ноября 2009

Я очень сомневаюсь в этом. Поскольку что-то ссылается на эту функцию (независимо от того, достигается ли оно во время выполнения), наиболее вероятно, что этот код будет фактически скомпилирован в ваш файл SWF / SWC.

Существуют более эффективные способы предотвращения попадания кода отладки в сборки выпуска. См. Ответ здмитрова.

...