Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > dimarik

Оценить эту запись

Anonymous function vs. Adobe AIR ADT

Запись от dimarik размещена 11.11.2013 в 15:00
Обновил(-а) dimarik 11.11.2013 в 22:57

Такая печаль. При использовании анонимок и после упаковки в ipa первый созданный экземпляр никогда не удаляется из памяти. А значит, не удаляются все объекты, на которые у него есть ссылки.

На устройстве баг проявляется в таком виде:

Код AS3:
new BindingWarsObject(); // <-- остается в памяти
new BindingWarsObject(); // удаляется
new BindingWarsObject(); // удаляется
System.gc();
 
/**
  * Constructor
  */
 public function BindingWarsObject() {
  super();
  var a:Function = function():void {}
 }
Если смотреть эмулятором adl, то все нормально.

Компилировал Adobe Flex Compiler (mxmlc) Version 4.6.0 build 23201.
Упаковывал утилиткой adt из AIR SDK 3.9 с опцией -target ipa-app-store -sampler.
Измерял Adobe Scout 1.1.1.354079 с включенным Memery Allocation Tracking.


UPDATE.

Теперь я попробовал скомпилировать с помощью ASC 2.0 из AIR SDK 3.9. Упаковал с прежними параметрами.
Теперь, если анонимка объявлена в конструкторе, то на каждый new создается аж два (!) объекта, два первых из которых не удаляются.
Scout говорит, что побочный создается в конструкторе класса этого объекта.
Всего комментариев 12

Комментарии

Старый 11.11.2013 15:55 alatar вне форума
alatar
 
Аватар для alatar
С упаковкой в ipa вообще куча проблем. У нас такой хмм... код:
Код AS3:
var someBoolean:Boolean = false;
...
//тут в цикле пробегаются объекты и при определенных условиях
someBoolean = true;
...
if (someBoolean == false)
{
    return;
}
...
После упаковки релизной версии всегда сваливался в return, пока не поменял на if (!someBoolean).
Старый 11.11.2013 16:00 dimarik вне форума
dimarik
 
Аватар для dimarik
alatar, подтверждаю, есть такое. Мы периодически таким же способом фиксим.
Обновил(-а) dimarik 11.11.2013 в 18:10
Старый 11.11.2013 16:40 expl вне форума
expl
Я с ipa не сталкивался, но что если вспомнить, что объекты - это замыкания для бедных и вместо анонимки влепить внутренний класс и создать его объект?
Анонимки они всё равно практически не используются во флеше.
Старый 11.11.2013 18:12 dimarik вне форума
dimarik
 
Аватар для dimarik
Вся беда, что flex-bindings генерируются компилятором, а в них применены анонимки. Качаю исходники копмилятора. Может быть смогу перевести анонимки на поля класса.
Старый 11.11.2013 20:57 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Понимаю желание компилятора писать анонимки. Мне тоже не хватает лямбд.
Старый 12.11.2013 13:24 toFL вне форума
toFL
Цитата:
alatar, подтверждаю, есть такое. Мы периодически таким же способом фиксим.
+1. Только в моём случае не помогло !value. Пришлось поднимать объявление переменной выше по коду.
Старый 12.11.2013 14:59 dimarik вне форума
dimarik
 
Аватар для dimarik
Запостил им в bugbase эту багу. Качнул компилятор, исправил замыкания на поля класса. Профит.
Старый 12.11.2013 15:57 alatar вне форума
alatar
 
Аватар для alatar
Ссылку на багу запости, пожалуйста.
Старый 12.11.2013 16:06 gloomyBrain вне форума
gloomyBrain
 
Аватар для gloomyBrain
Старый 15.11.2013 03:19 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
За что ж вы так бинды то любите?
Мне хватило один раз поглядеть на код который оно генерит на выходе, чтоб больше не заглядывать.
Флекс юзаю только во всяких админ-тулзах, типа редакторы ДБ для геймдизов и прочего, где это не суть важно, но дает пачку профита по простоте организации кода, в остальных случаях пур-ас3 онли.
Старый 15.11.2013 23:51 dimarik вне форума
dimarik
 
Аватар для dimarik
Я могу править компилятор.
Старый 16.11.2013 00:09 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
А я могу автогеном и на фрезерном станке по дереву. Но зачем?
 

 


Часовой пояс GMT +4, время: 10:50.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.