Книга ActionScript 3.0 - Оглавление

Глава1. Основы языка
Part1. Числовые типы данных (Number, int, unit)
Part1.1. Арифметические операции, объект Math
Part2. Логический тип данных Boolean
Part3. Строковый тип данных String
Part3.1. Класс String и его методы/свойства
Part3.2. Преобразование строки в число и обратно
Part4. Работа с массивами Array
Part4.1. Методы и свойства класса Array
Part4.2. Сортировка массива
Part4.3. Фильтрация массива
Part5. Работа с массивами Vector
Part6. Тип данных Object
Part6.1. Класс Object и преобразования типов
>> Part7. Передача данных по ссылке
Part8. Неопределенные значения NaN, null и undefined
Part9.1. Оператор выбора if-else
Part9.1.1 “? :” – альтернативная конструкция if-else
Part9.2. Оператор выбора switch - case
Part10.1. Оператор цикла for и for in
Part10.2. Операторы цикла while и do
Part11. Таймеры
Книга ActionScript 3.0


Ch1.Part7. Передача данных по ссылке | Книга ActionScript 3.0

Вы наверняка помните как в начале этой главы мы разбирали что все значения программы хранятся в определенном куске памяти вашего компьютера. В этой части книги мы разберем как происходит передача значения в момент когда мы присваиваем значение от одной переменной к другой.

Начнем с простых типов данных: Number, int, uint, Boolean и String. Как только вы создали переменную и присвоили ей значение, для неё выделяется кусок памяти в вашем компьютере. В момент когда вы переедаете значение другой переменной, ваше значение клонируется и в памяти компьютера выделяется новый кусок памяти:

Переменная num2 не изменилась, не смотря на то что мы поменяли значение у переменной num1. Это потому что при передаче значения произошло его клонирование.

Передача значения сложных типов, таких как Array, Vector, Object происходит немного по другому. В этом случае передача значения происходит по ссылке, т.е. значение не клонируется. И все переменные будут ссылаться на один кусок памяти. А это значит что если вы измените свойство в одной переменной, эти изменения тут же отобразятся и в других переменных, ссылающихся на это значение. Рассмотрим эту ситуацию на примере создания объекта хранящего информацию о пользователе:

Все выше сказанное относится ко всем составные объектам, например если в замените один элемент в массиве, все переменные которые ссылаются на этот массив будут обновлены.

Значение в памяти компьютера будет жить до тех пор пока есть хотя бы одна переменная ссылающаяся на этот объект. Что бы уничтожить ссылку на объект, достаточно присвоить переменной значение null.

Как только будет уничтожена последняя ссылка но объект, этот объект становится не нужным. Но это не значит что объект сразу удаляется, значение живет в памяти компьютера еще какое то время. Значение будет уничтожено(и освобождена память) в двух случаях:

  • Вы завершили приложение
  • Сработал сборщик мусора (Garbage Collector)

Сборщик мусора начинает свою работу в момент когда приложению не хватает свободной памяти. Он определяет все ненужные объекты в памяти и удаляет их, освобождая память.

Не забывайте следить за тем что бы с ненужных объектов вовремя были удалены все ссылки, иначе рано или поздно ваше приложение умрет

Эту статью прочитали 1792 раз

Скачать исходные коды примеров из книги можно в облаке.
Возникли вопросы по книге? Не стесняйтесь спрашивать в комментариях или любым другим способом на странице Контакты.
Присоединяйтесь к нам в социальных сетях: ВКонтакте, Twitter и Facebook
Понравилась книга? Буду благодарен если вы поделитесь ссылкой с друзьями.



<< Предыдущий раздел | Следующий раздел >>
Книга ActionScript 3.0 - Оглавление

Глава1. Основы языка
Part1. Числовые типы данных (Number, int, unit)
Part1.1. Арифметические операции, объект Math
Part2. Логический тип данных Boolean
Part3. Строковый тип данных String
Part3.1. Класс String и его методы/свойства
Part3.2. Преобразование строки в число и обратно
Part4. Работа с массивами Array
Part4.1. Методы и свойства класса Array
Part4.2. Сортировка массива
Part4.3. Фильтрация массива
Part5. Работа с массивами Vector
Part6. Тип данных Object
Part6.1. Класс Object и преобразования типов
>> Part7. Передача данных по ссылке
Part8. Неопределенные значения NaN, null и undefined
Part9.1. Оператор выбора if-else
Part9.1.1 “? :” – альтернативная конструкция if-else
Part9.2. Оператор выбора switch - case
Part10.1. Оператор цикла for и for in
Part10.2. Операторы цикла while и do
Part11. Таймеры


Комментарии ВКонтакте:




Комментарии Facebook:




Комментарии WordPress: