AS3 Profiling - почему при установке текста увеличивается количество объектов и функций - PullRequest
1 голос
/ 24 ноября 2011

Во-первых, может кто-нибудь объяснить, что подразумевается под Object и Function в профилирующей среде.

Во-вторых, почему увеличивается количество объектов и функций, когда я многократно устанавливаю свойство text текстового поля:

override public function setLanguage(id:String):void
    {
        if (id == "en")
        {
            ui.title.text = _data.text.title.en;
            ui.title.direction = Direction.LTR;
        }

        else if (id == "ae")
        {
            ui.title.text = _data.text.title.en;
            ui.title.direction = Direction.RTL;
        }
    }

Ответы [ 2 ]

2 голосов
/ 24 ноября 2011

от Лорана:

Внутренне TextField :: text, скорее всего, является геттером / сеттером (так как ему необходимо установить флаг для обновления отображения текстового поля, а также, возможно, для обновления содержимого HTML и т. Д.), Поэтому при его установке вы эффективно вызываете функция.

Это означает, что TextField.text реализован как средство получения и установки свойства, поэтому, если бы вам пришлось его кодировать, вы бы увидели что-то вроде

private var _text:String="";
public function get text():String {
    return _text;
}

public function set text(value:String):void {
    _text=value;
}

Ваш счет Object увеличивается каждый раз, когда вы ссылаетесь (ищите лучшее слово, не убивайте меня об этом: P) объект (надеюсь, вы знаете, что это за объекты), и ваш счет Function увеличивается с каждым разом раз, когда вы вызываете функцию.

Так что, когда вы делаете что-то вроде

myTextField.text="Hello World";

вы ссылаетесь на объект myTextField и , вызывая его функцию set text(String);, в результате чего ваш счет увеличивается на 1 каждый.

2 голосов
/ 24 ноября 2011

Внутренне TextField :: text, скорее всего, является геттером / сеттером (поскольку ему необходимо установить флаг для обновления отображения текстового поля, а также, возможно, для обновления содержимого HTML и т. Д.), Поэтому при его установке вы фактически вызываете функция.

Что вы не понимаете в разнице между функцией и объектом? Не могли бы вы быть более конкретным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...