Показать сообщение отдельно
Старый 18.02.2010, 14:12
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 36  
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от Nirth Посмотреть сообщение
Потому что делать надо так:
Код AS3:
var ac:ArrayCollection = new ArrayCollection([1...1000]);
for( var i:uint = 0; i < ac.length; i ++ )
    trace( ac.getItemAt( i ) );
А не пользоватся оператором доступа ^_^
Это те же яйца, только в профиль, оно вообще одно и то же делает т.как ArrayCollection наследуется от Proxy и в getProperty она вызывает getItemAt() - проблема именно в нем. Потому что кто-то волевым решением постановил, что одна и та же ArrayCollection должна быть во все бочки затычкой, и поэтому getItemAt весь завернут в... try-catch-rethrow, а нужно это для того, чтобы испустить ItemPendingError, которая нужна для биндинга. Это, в свою очередь нужно для того, чтобы при желании можно было организовать пейджинг. То есть, ситуация описаная в первом посту может оказаться вполне реальной если у вас страница данных = один элемент в коллекции Соответственно, обращение к элементу в коллекции уводит програму в такой глубокий стак, что даже просто разбираться не хочется. Т.е. уже просто само по себе наличие try-catch в обращении к элементу в колекции = х5-10 время доступа, дальше помножим это еще и на то, что оно динамическое, дальше на то, что оно унаследовано 100500 раз, дальше на то, что оно еще и вызовет и поймает ошибки в других местах...
__________________
Hell is the possibility of sanity