Anonymous function vs. Adobe AIR ADT
Такая печаль. При использовании анонимок и после упаковки в ipa первый созданный экземпляр никогда не удаляется из памяти. А значит, не удаляются все объекты, на которые у него есть ссылки.
На устройстве баг проявляется в таком виде:
new BindingWarsObject(); // <-- остается в памяти new BindingWarsObject(); // удаляется new BindingWarsObject(); // удаляется System.gc(); /** * Constructor */ public function BindingWarsObject() { super(); var a:Function = function():void {} }
Компилировал 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 | |
С упаковкой в ipa вообще куча проблем. У нас такой хмм... код:
После упаковки релизной версии всегда сваливался в return, пока не поменял на if (!someBoolean). |
11.11.2013 16:00 | |
alatar, подтверждаю, есть такое. Мы периодически таким же способом фиксим.
|
|
Обновил(-а) dimarik 11.11.2013 в 18:10
|
11.11.2013 18:12 | |
Вся беда, что flex-bindings генерируются компилятором, а в них применены анонимки. Качаю исходники копмилятора. Может быть смогу перевести анонимки на поля класса.
|
11.11.2013 20:57 | |
Понимаю желание компилятора писать анонимки. Мне тоже не хватает лямбд.
|
12.11.2013 13:24 | |
Цитата:
alatar, подтверждаю, есть такое. Мы периодически таким же способом фиксим.
|
12.11.2013 14:59 | |
Запостил им в bugbase эту багу. Качнул компилятор, исправил замыкания на поля класса. Профит.
|
12.11.2013 15:57 | |
Ссылку на багу запости, пожалуйста.
|
12.11.2013 16:06 | |
Ее же не сложно найти
|
15.11.2013 23:51 | |
Я могу править компилятор.
|
16.11.2013 00:09 | |
А я могу автогеном и на фрезерном станке по дереву. Но зачем?
|
Последние записи от dimarik
- Memory allocation на Vector.<IInterface> (07.05.2015)
- [Starling] Тормози меня плавно! (28.10.2014)
- [Starling идиотизмы] Об интерактивных событиях (02.10.2014)
- О типах исключений. (23.04.2014)
- Немного о Vector и ByteArray (28.03.2014)